[Linux]MySQL远程登录

在开始远程连接数据库之前,需要将虚拟机中的防火墙3306的端口打开,并重新启动服务
打开防火墙中3306的端口 -A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT

防火墙文件地址:/etc/sysconfig/iptables
重启防火墙服务:
systemctl start iptables

远程链接数据库

如果无法登录,有两种情况:
1.如果你是远程的mysql,那个MySQL服务器要设置你的ip访问权限。
2.如果你是用的本机数据库,那个把数据库id改成自己的。

解决方案
一、改表法。

可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改 “mysql” 数据库里的 “user” 表里的 “host” 项,从”localhost”改称”%”

登录数据库:

mysql>mysql -u root -pvmware

mysql>use mysql;

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

mysql>select host, user from user;

mysql>FLUSH RIVILEGES
二、 授权法。

注意:以下内容中,myuser:数据库用户名,mypassword:数据库密码。

(1)例如,你想myuser使用mypassword从任何主机连接到mysql服务器的话。

第一步:root用户登录;mysql>mysql -u root -p rootpassword;

第二步:赋予权限;mysql>GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;

第三步:mysql>FLUSH PRIVILEGES;

(2)如果你想允许用户myuser从ip为192.168.1.3的主机连接到mysql服务器,并使用mypassword作为密码

mysql>GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.1.3' 
      IDENTIFIED BY 'mypassword' WITH GRANT OPTION;

mysql>FLUSH   PRIVILEGES;

(3)如果你想允许用户myuser从ip为192.168.1.3的主机连接到mysql服务器的dk数据库,并使用mypassword作为密码

mysql>GRANT ALL PRIVILEGES ON dk.* TO 'myuser'@'192.168.1.3' 
      IDENTIFIED BY 'mypassword' WITH GRANT OPTION; 

mysql>FLUSH   PRIVILEGES;
mysql命令参考

ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';:修改密码
CREATE USER 'root'@'%' IDENTIFIED BY 'root';:创建用户
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;:授权
FLUSH PRIVILEGES;:刷新权限
DROP USER 'username'@'host'; :删除用户

注意!!!!!!
1、GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;
这个WITH GRANT OPTION,只给'root'@'localhost'授权,最好不要给'root'@'%',即所有地址。防止用户名密码泄露后,在其他机器上修改了密码。
2、删除用户,最好用命令删除,因为如果直接删除表,可能会有关联,删不干净。

linux 查看数据库和表
Linux下MySQL数据库常用基本操作
远程登录mysql,报错:message from server: “Host is not allowed to connect to this MySQL server”解决办法

    原文作者:瑾兰
    原文地址: https://www.jianshu.com/p/72bb7c58aa41
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞