当服务器安装完MySQL之后就需要对其进行帐号分配了。我们需要确保哪些帐号能本地访问,哪些帐号能其他机器访问,这些帐号又都有哪些的权限。
比如线上数据库开发者们具有读表的权限,而DB们读写都有权限,根据用户登录的地点限制访问权限等。
下面介绍下具体如何进行MySQL安全的管理。
注意:在对MySQL的所有操作中尽量不要使用root帐号(仅在不能用其他管理帐号时使用)
可以在mysql数据库中user表查看所有用户的信息
USE mysql;
SELECT user FROM user;
创建一个密码为pwd1的user1帐号:
CREATE USER user1 IDENTIFIED BY 'pwd1';
也可以直接插入行到user表中,不过不建议这么做。
RENAME USER user1 TO newuser;--用户重命名
DROP USER user1;--删除帐号
创建帐号之后就要对帐号的访问权限进行设置了,首先使用下面的语句查看下访问权限:
SHOW GRANTS FOR user1;
使用GRANT语句给用户赋予权限。
GRANT SELECT ON db1.* TO 'user1'@'%';
上面的语句是给user1用户赋予数据库db1中所有表的读权限。%是用户在任何地方登录(任何IP)下都能访问。
GRANT的反操作是REVOKE:
REVOKE SELECT ON 'db1'.* FROM 'user1'@'%';
所有的权限在下图列出:
不过这样有个问题出现,当某个数据库或表删除时(用DROP语句),相关的访问权限仍然存在,而且如果将来重新建立该数据库或表时,这些权限仍然起作用。
更改用户密码如下(不指定用户名i时即修改当前用户密码):
SET PASSWORD FOR user1 = Password('new');
SET PASSWORD = Password('new');
分配好权限后刷新下:
FLUSH RIVILEGES;
注:当配好账户之后,发现用其他机器使用客户端还不能连上数据库,看下防火墙端口是否打开,因为有的时候就是这里给忘了。