Mysql 用户权限管理

版本:mysql5.6

一:存放位置
mysql用户的存放位置在mysql库下的user表中

mysql> use mysql;
Database changed
mysql> select Host, User, Password from user;
+-----------+------------+-------------------------------------------+
| Host      | User       | Password                                  |
+-----------+------------+-------------------------------------------+
| localhost | root       | *85E26B8AB29FEE8453201A3511DAE24A24059109 |
| 127.0.0.1 | root       | *85E26B8AB29FEE8453201A3511DAE24A24059109 |
| %         | outside    | *4A8E00D6E06B539C7E50A9A5010ACFB1861FCACF |
| localhost | program    | *85E26B8AB29FEE8453201A3511DAE24A24059109 |
+-----------+------------+-------------------------------------------+
4 rows in set (0.00 sec)

二:创建一个用户

mysql> CREATE USER 'jeffrey'@'localhost' IDENTIFIED BY 'mypass';
Query OK, 0 rows affected (0.00 sec)

mysql> select Host, User, Password from user where User = 'jeffrey';
+-----------+---------+-------------------------------------------+
| Host      | User    | Password                                  |
+-----------+---------+-------------------------------------------+
| localhost | jeffrey | *6C8989366EAF75BB670AD8EA7A7FC1176A95CEF4 |
+-----------+---------+-------------------------------------------+
1 row in set (0.00 sec)

# 内网可访问 只需把Host设置为192.168.1.%即可
# 外网可访问 只需把Host设置为%即可

三:赋予权限

mysql> grant all on dbname.* to 'jeffrey'@'localhost';
Query OK, 0 rows affected (0.00 sec)
# 必须冲刷一下权限
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
  • 全局权限 所有表
GRANT ALL ON *.* TO 'someuser'@'somehost';
GRANT SELECT, INSERT ON *.* TO 'someuser'@'somehost';
  • 数据库权限
GRANT ALL ON mydb.* TO 'someuser'@'somehost';
GRANT SELECT, INSERT ON mydb.* TO 'someuser'@'somehost';
  • 表权限
GRANT ALL ON mydb.mytbl TO 'someuser'@'somehost';
GRANT SELECT, INSERT ON mydb.mytbl TO 'someuser'@'somehost';
  • 字段权限
GRANT SELECT (col1), INSERT (col1,col2) ON mydb.mytbl TO 'someuser'@'somehost';

四:删除用户

mysql> DROP USER 'jeffrey'@'localhost';
Query OK, 0 rows affected (0.00 sec)

五:修改密码

mysql> update user set Password = password('hehe') where user = 'x' limit 1;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

参考资料
http://dev.mysql.com/doc/refman/5.6/en/create-user.html
http://dev.mysql.com/doc/refman/5.5/en/drop-user.html
http://dev.mysql.com/doc/refman/5.7/en/grant.html

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、付费专栏及课程。

余额充值