在开始远程连接数据库之前,需要将虚拟机中的防火墙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”解决办法