以前架 MySQL 服务器都是在本机上,没有考虑过用户授权的问题,直接使用 root 用户进行连接数据库。后来开发组内部共同使用一个 MySQL 数据库,问题出现了,每次都是数据库连接无法获得。非常奇怪,而且用户名和密码都是对的。
于是查找 MySQL 开发手册,对这个的解释是:root 用户仅能从本机访问。
查询一下用户表:
select host, user from mysql.user where user='root';
+-----------+------+
| host | user |
+-----------+------+
| localhost | root |
+-----------+------+
1 row in set (0.00 sec)
发现问题的原因之后,新建一个用户并授予访问权限。
grant all privileges on test.* to newuser@'%'
identified by security;
flush privileges;
授予 test 数据库的 所有表 的 所有访问权限 给 从任意客户端 登录的 newuser 用户。
查询一下用户表:
select host, user from mysql.user where user='newuser';
+-----------+---------+
| host | user |
+-----------+---------+
| % | newuser |
+-----------+---------+
1 row in set (0.00 sec)
对于 Windows 操作系统还需要 关闭防火墙 或者 将 MySQL 放到 防火墙 的例外列表中去才可以。
现在,从任意客户端都可以使用 newuser 用户名进行访问了。