MySQL权限管理
- 权限管理信息被存储在
user,db,host,table_priv,column_priv,procs_priv的表中 - 通过
CREATE,DROP权限可以新建数据库/表,删除数据库/表 SELECT,INSERT,UPDATE,DELETE对现存的表进行增删改查INDEX允许对现存的表进行建立和删除索引
MySQL账户管理
- 使用
GRANT语句
e.g.:GRANT ALL PRIVILEGES ON *.* TO 'monkey'@'localhost' IDENTIFIED BY 'some_password' WITH GRANT OPTION;GRANT RELOAD,PROCESS ON *.* TO 'admin'@'localhost';GRANT命令解释:PRIVILEGES表示任何权限,后面也可以是SELECT/UPDATE;ON表示影响哪些表,前面的表示数据库,后面的表示表;TO表示授权给何用户,前面的为用户名,后面的可以填IP,IP段,主机名或者%(表示任意);之后是可选的指定用户的密码 - 直接操作MySQL的授权表(user) 注意,插入之前可以查看表结构然后一次插入(
DESCRIBE);插入时在密码字段要记得用PASSWORD(<密码>)进行加密,否则插入失败;插入完成之后使用FLUSH PRIVILEGES刷新,否则授权表的改动只有重启服务器才会被发现
移除用户
DROP USER
限制用户账户资源
- 可以限制用户以下资源:1.每小时发出的查询数;2.每小时发出的更新数;3.每小时可以连接的服务器次数
- 使用
GRANT语句实现资源限制:实际上就是在上述的账户管理中的GRANT语句后面加上WITH子句即可,e.g.:GRANT ALL ON customer TO 'admin'@'localhost' IDENTIFIED BY 'some_password' WITH MAX_QUERIES_PER_HOUR 20 MAX_UPDATE_PER_HOUR 15 MAX_CONNECTIONS_PER_HOUR 20 MAX_USER_CONNECTION 10;
修改用户密码
- 为现有用户添加密码:
mysqladmin -u root -h hostname password 'new password'; - 修改密码:
SET PASSWORD FOR 'user'@'localhost' = PASSWORD('new password');
数据库备份和恢复
mysqldump/source