MySQL用户权限管理

- 查看权限
select user,host from mysql.user;
select db,user,host from mysql.db;
show grants for {user}@{IP};

- 向指定用户(及IP)授权:
grant all privileges on {db}.* to {user}@{IP} identified by '{password}';
grant select         on {db}.* to {user}@{IP} identified by '{password}';
grant select,insert,update,delete on ...
flush privileges;

用户不存在时,包含创建用户(GRANT USAGE...)

- 向指定用户撤销权限:
revoke all privileges on {db}.* from {user}@{IP} identified by '{password}';
revoke select         on {db}.* from {user}@{IP};
flush privileges;

撤销DB访问权限,不能禁止IP访问, 因为并未收回USAGE权限,也未删除用户。

- 禁止IP访问(删除用户@IP):
delete from mysql.user where Host='{IP}' and User='{user}';

flush privileges;


Q: root@localhost无法连接mysql服务

# mysql -uroot -ppassword
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

1. 使用有grant权限用户登录,并为root从本机授权
# mysql -h127.0.0.1 -uroot -ppassword
> GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' identified by 'password' WITH GRANT OPTION;

Q: root@localhost无法为其他DB用户授权
mysql> grant all privileges on db.* to user@ip identified by 'password';
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

1. 查看root@localhost:无grant权限
mysql> show grants for root@localhost;
+----------------------------------------------------------------------------------------------------------------------+
| Grants for root@localhost                                                                                            |
+----------------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD '*96184BCCD3CEA5648C9A26E4753DD258B207478F' |

2. 删除root用户并重新加载权限
mysql> delete from mysql.user where Host='localhost' and User='root';
mysql> flush privileges;

3. 使用有grant权限用户登录,重新创建root@localhost并授grant权
# mysql -h127.0.0.1 -uroot -ppassword
> GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' identified by 'password' WITH GRANT OPTION;

MySQL 用户权限管理包括两个方面:全局级别的权限和对象级别的权限。全局级别的权限控制用户对整个 MySQL 系统的操作,对象级别的权限控制用户对数据库、表、列等对象的操作。 在 MySQL 中,授权命令是 GRANT,撤销命令是 REVOKE。下面介绍一下如何授予用户列级别的权限: 1. 首先,登录 MySQL 数据库。 2. 使用 GRANT 命令授予用户对指定列的 SELECT 权限,例如: GRANT SELECT (column_name) ON database_name.table_name TO 'user'@'host'; 这里的 column_name 是要授予 SELECT 权限的列名,database_name 和 table_name 分别是数据库名和表名,user 和 host 是要授予权限用户和主机名。 3. 如果要授予用户对多个列的 SELECT 权限,可以使用逗号分隔列名,例如: GRANT SELECT (column1, column2, column3) ON database_name.table_name TO 'user'@'host'; 4. 如果要授予用户对所有列的 SELECT 权限,可以使用 * 代替列名,例如: GRANT SELECT (*) ON database_name.table_name TO 'user'@'host'; 5. 如果要授予用户对指定列的 INSERT、UPDATE 或 DELETE 权限,可以将 SELECT 替换为相应的命令。 6. 如果要撤销用户对指定列的权限,可以使用 REVOKE 命令,例如: REVOKE SELECT (column_name) ON database_name.table_name FROM 'user'@'host'; 这里的参数和 GRANT 命令相同。 总之,MySQL 用户权限管理是非常重要的,可以通过授权和撤销命令来精细地控制用户对数据库、表、列等对象的操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值