mysql 开启远程连接
今天在服务器安装了 mysql, 准备用 mysqlguitools 远程登录的时候出错, 提示: Host 'xxx' is not allowed to connect to this MySQL server. 网上找了一些资料, 是 mysql 未开启 mysql 远程访问权限导致.
记录解决方案供以后参考.:
1. 登录到 mysql: mysql http://www.2cto.com/database/MySQL/ -uroot -ppwd
2. 查看 user 表:
- mysql> use mysql
- Database changed
- mysql> select host,user,password from user;
- +------+------+-------------------------------------------+
- | host | user | password |
- +------+------+-------------------------------------------+
- | localhost | root | *826960FA9CC8A87953B3156951F3634A80BF9853 |
- +------+------+-------------------------------------------+
- 1 row in set (0.00 sec)
表中 host,user 字段标识了可以访问数据库的主机和用户. 例如上面的数据就表示只能本地主机通过 root 用户访问. 原来如此, 难怪远程连接死活连不上.
为了让数据库支持远程主机访问, 有两种方法可以开启远程访问功能.
第一种 (改表法):
修改 host 字段的值, 将 localhost 修改成需要远程连接数据库的 ip 地址. 或者直接修改成 %. 修改成 % 表示, 所有主机都可以通过 root 用户访问数据库. 为了方便, 我直接修改成 %. 命令: mysql> update user set host = '%' where user = 'root';
再次查看 user 表
- +------+------+-------------------------------------------+
- | host | user | password |
- +------+------+-------------------------------------------+
- | % | root | *826960FA9CC8A87953B3156951F3634A80BF9853 |
- +------+------+-------------------------------------------+
- 1 row in set (0.00 sec)
修改成功, 输入命令 mysql> FLUSH PRIVILEGES; 回车使刚才的修改生效, 再次远程连接数据库成功.
第二种 (授权法):
例如, 你想 root 使用 mypassword 从任何主机连接到 mysql 服务器的话.
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
如果你想允许用户 myuser 从 ip 为 192.168.1.3 的主机连接到 mysql 服务器, 并使用 mypassword 作为密码
- GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.3' IDENTIFIED BY
- 'mypassword' WITH GRANT OPTION;
输入命令 mysql> FLUSH PRIVILEGES; 回车使刚才的修改生效, 再次远程连接数据库成功. bingo.
别忘记最后的 FLUSH PRIVILEGES; 刷新先前的修改.
来源: http://www.bubuko.com/infodetail-2599953.html