16.6 用户权限和访问控制
1 用户
1.1 创建用户并设置密码
create user aa@localhost identified by '123';//本地用户
create user aa@'%' identified by '123'; //其他远程用户1.2 重命名用户
rename user 'test3'@'%' to 'test1'@'%';1.3 删除用户
drop user 'testUser'@'%';2 权限
2.1 授予权限
grant 权限 on 库.表 to 用户@主机 identified by '密码';grant 权限 on 库.表 to 用户@主机 identified by '密码';
grant all on *.* to 'testUser'@'%' identified by '123';2.1.1 查询、插入、更新、删除的权限
2.1.2 创建和删除表、索引、视图、存储过程的权限
2.1.3 指定用户管理数据库的权限
2.2 权限的作用层次
2.2.1 作用在整个MySQL服务器上
2.2.2 作用在单个数据库上
2.2.3 作用在单个数据表上
2.2.4 作用在单个数据表的若干个列上
2.2.5 作用在存储过程、函数上
2.3 权限刷新
2.4 查看权限
2.5 移除权限
2.6 mysql授权表
mysql授权表共有5个表:user、db、host、tables_priv和columns_priv。
2.6.1 user表
user表列出可以连接服务器的用户及其口令,并且它指定他们有哪种全局(超级用户)权限。在user表启用的任何权限均是全局权限,并适用于所有数据库。
2.6.2 db表
db表列出数据库,用户有权限访问它们。在这里指定的权限适用于一个数据库中的所有表。
2.6.2 host表
host表与db表结合使用在一个较好层次上控制特定主机对数据库的访问权限,这可能比单独使用db好些。这个表不受GRANT和REVOKE语句的影响,所以,你可能发觉你根本不是用它。
2.6.3 tables_priv表
tables_priv表指定表级权限,在这里指定的一个权限适用于一个表的所有列。
2.6.4 columns_priv表
columns_priv表指定列级权限。这里指定的权限适用于一个表的特定列。
2.7 注意事项
grant, revoke 用户权限后,该用户只有重新连接 MySQL 数据库,权限才能生效。
如果想让授权的用户,也可以将这些权限 grant 给其他用户,需要选项 grant option
3 密码
3.1 修改密码
3.1.1 更新mysql.user表
3.1.2 用set password命令
语法:set password for ‘用户名'@'登录地址'=password(‘密码')
3.1.3 mysqladmin
语法:mysqladmin -u用户名 -p旧的密码 password 新密码
3.2 忘记密码
3.2.1 跳过授权
vim /etc/my.cnf
3.2.2 重启服务
3.2.3 修改密码
此时在终端用mysql命令登录时不需要用户密码,然后按照修改密码的第一种方式将密码修改即可。
3.2.4 还原登录权限跳过检查配置
将my.cnf中mysqld节点的skip-grant-tables配置删除,然后重新启动服务即可。
参考链接:
Last updated
Was this helpful?