MySQL设置允许用户远程登录

非 Y 不嫁゛ 提交于 2020-04-06 05:12:01

项目中需要连接虚拟机上面的MySQL数据库,但是总是出错,怀疑本机是否有连接远程数据库的权限。

 

执行命令:

mysql> use mysql;
mysql> select host,user from user;

查看结果是不是root用户仅允许本地(localhost)登录,下面这个截图就是这种情况:

 
mysql-root-state

是的话,就要修改它的host为%,表示任意IP地址都可以登录。

mysql> update user set host = '%' where user = 'root';

执行完后可能提示error。再mysql> select host,user from user;查看下吧。

root对应的host成了%,表示可以任意IP地址登录了。

 
mysql-change-root-state
mysql> flush privileges;

把缓存flush掉,在使用update语句修改用户记录后,需要FLUSH语句告诉服务器重载授权表。

                                                                                                                                                                   

 

 

MySQL默认在本地localhost登录root用户,然而远程连接却会报错(root@X.X.X.X acess denied)

这里就需要进行配置允许远程连接

方式一:
进入mysql: mysql -uroot -p
运行mysql: use mysql;
开启远程访问权限: GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'amigo'
强制刷新权限: flush privileges;
关闭mysql: exit;
 

方式二:
进入mysql: mysql -uroot -p
运行mysql: use mysql;
查看用户表: SELECT `Host`,`User` FROM user;
更新用户表: UPDATE user SET `Host` = '%' WHERE `User` = 'root' LIMIT 1;
强制刷新权限: flush privileges;
关闭mysql: exit;
 

开启关闭服务器防火墙:
查看防火墙是否开启(如果显示running,则防火墙为开启状态): 

firewall-cmd --state
关闭防火墙:

 systemctl stop firewalld.service
开启防火墙: 

systemctl start firewalld.service
关闭开机自启动: 

systemctl disable firewalld.service
开启开机自启动: 

systemctl enable firewalld.service
 

 
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!