远程连接提示:Host 'xxx' is not allowed to connect to this MySQL server。是mysql未开启mysql远程访问权限导致。
登录mysql,发现出现了 Access denied for user 'root' T'localhost (using password: YES)
此时先找到my.cnf文件,使用命令mysql --help | grep 'my.cnf'查看mysql加载配置文件的顺序,发现
此时看到etc目录下有my.cnf文件。
使用命令:
vim my.cnf
skip-grant-tables #在[mysqld]下面添加这一行,忽略权限表
然后重启下服务:service mysql restart
然后登录mysql,这时候不需要输入密码,直接回车进入。
然后选择数据库use mysql;
输入select user,host from user;
发现没有root用户,此时选择创建root账号
create user 'root'@'localhost' identified by '123456';
然后发现创建失败,选择使用flush privileges;
如果还是失败,则选择先删除root
drop user 'root'@'localhost';
然后flush privileges;
再重新创建一次
create user 'root'@'localhost' identified by '123456';
此时创建成功之后,
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION; #赋予所有库所有表操作权限
然后flush privileges;
完成root的修改。
但是此时使用外部连接工具连接服务器的数据库时,还是连接不了,
此时需要修改host字段的值,将localhost修改成需要远程连接数据库的ip地址。或者直接修改成%。修改成%表示,所有主机都可以通过root用户访问数据库。为了方便,我直接修改成%。命令:
mysql> update user set host = '%' where user = 'root';
然后flush privileges;
完成配置,再使用工具连接,发现能够成功连接。