1. 本地进入mysql数据库
mysql -uroot -p123456
(ps:root是用户名, 123456是密码)
2. mysql远程连接授权
USE mysql;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'WITH GRANT OPTION;
FLUSH PRIVILEGES;
(ps:GRANT ALL PRIVILEGES表示授权所有权限, 上面*.*中第一个*是授权可以访问的数据库名称, root是用户名, %表示请允许任意IP地址, 即任意主机可访问)
3. 测试是否可远程连接mysql数据库
mysql -h172.16.10.13 -uroot -p123456
如果连接mysql数据库时出现以下信息:
(1045, "Access denied for user 'root'@'192.168.2.47' (using password: YES)")
由需要对mysql进行远程授权, 如下操作:
SELECT user,host,password FROM mysql.user;
mysql> SELECT user,host,password FROM mysql.user;
+------+-----------+-------------------------------------------+
| user | host | password |
+------+-----------+-------------------------------------------+
| root | localhost | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| root | % | |
+------+-----------+-------------------------------------------+
2 rows in set (0.00 sec)
mysql>
可以看到非localhost或127.0.0.1的机器远程访问mysql数据库里,密码是空的, 这里我们可以不用输入密码直接访问mysql,。至于为什么会出现以上错误信息, 是因为我们的用非空密码进行访问, 而他远程访问时是不需要密码的, 所以导致出现以上信息。 如果需要设置密码,假设我们将密码设置为123456, 则只需要执行以下命令:
grant all on *.* to 'root'@'%' identified by '123456';
或
GRANT ALL PRIVILEGES ON * . * TO 'root'@'%' IDENTIFIED BY PASSWORD '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9' WITH GRANT OPTION;
mysql> SELECT user,host,password FROM mysql.user;
+------+-----------+-------------------------------------------+
| user | host | password |
+------+-----------+-------------------------------------------+
| root | localhost | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| root | % | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
+------+-----------+-------------------------------------------+
2 rows in set (0.00 sec)
mysql>
其中上面的host:%表示任意IP, 即任意ip远程访问mysql数据库, 其用户名为:root, 密码为123456。测试下, 结果成功访问。
或, 允许ip为192.168.2.200远程访问mysql数据库, 用户名/密码为root/123456:
mysql> grant all on *.* to root@192.168.2.200 identified by '123456';
OK, Enjoyt it!!!