MySQL 用户管理 详解

MySQL包括普通用户和root用户,root用户是超级管理员拥有所有权限
1> 新建用户
<1> 创建普通用户,语法格式 : CREATE USER user [IDENTIFIED BY [PASSWORD] 'password'] [,user [IDENTIFIED BY [PASSWORD] 'password']]...
mysql> CREATE USER 'test1'@'localhost' IDENTIFIED BY 'test1';
创建指令用户名在其 @ 后指定的是访问地址,此处指定该用户 localhost 地址可以访问,要所有地址都可以访问使用 %

2> 删除用户
<1> 删除普通用户,语法格式 : DROP USER user [,user]...;
mysql> DROP USER 'test2'@'localhost';

3> root用户修改自己的密码,语法格式 : mysqladmin -u username -p password "new_password";
注 : 其中的 password 为关键字不是指旧密码,而且新密码必须用双引号括起来使用单引号会出现错误,如果使用单引号,可能造成修改后密码不是你想要修改的
mysql> mysqladmin -u root-p password "myroot1";

4> root用户修改普通用户密码,语法格式 : SET PASSWORD FOR 'username'@'hostname'=PASSWORD("new_password");
注 : 新密码必须使用PASSWORD()函数加密
mysql> SET PASSWORD FOR 'test3'@'hostname'=PASSWORD("mytest1");

通过修改用户表的方式修改用户密码
mysql> CREATE USER 'test'@'%' IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.15 sec)

mysql> SELECT user,host FROM mysql.user;
+---------------+-----------+
| user          | host      |
+---------------+-----------+
| root          | %         |
| test          | %         |
| mysql.session | localhost |
| mysql.sys     | localhost |
| root          | localhost |
+---------------+-----------+
5 rows in set (0.00 sec)

mysql> ALTER user 'test'@'%' IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.00 sec)


5> 普通用户修改密码,语法格式 : SET PASSWORD=PASSWORD('new_password');
mysql>  SET PASSWORD=PASSWORD("test");

6>  各种权限
权限名称
对应 user 表中列
权限的范围
CREATECreate_priv数据库、表或索引
DROPDrop_priv数据库或表
GRANT OPTIONGrant_priv数据库、表、存储过程或函数
REFERENCESReferences_priv数据库或表
ALTERAlter_priv修改表
DELETEDelete_priv删除表
INDEXIndex_priv用索引查询表
INSERTInsert_priv插入表
SELECTSelect_priv查询表
UPDATEUpdate_priv更新表
CREATE VIEWCreate_view_priv创建视图
SHOW VIEWShow_view_priv查看视图
ALTER ROUTINEAlter_routine_priv修改存储过程或存储函数
CREATE ROUTINECreate_routine_priv创建存储过程或存储函数
EXECUTEExecute_priv执行存储过程或存储函数
FILEFile_priv加载服务器主机上的文件
CREATE TEMPORARY TABLESCreate_tmp_table_priv创建临时表
LOCK TABLESLock_tables_priv锁定表
CREATE USERCreate_user_priv创建用户
PROCESSProcess_priv服务器管理
RELOADReload_priv重新加载权限表
REPLICAION CLIENTRepl_client_priv服务器管理
REPLICAION SLAVERepl_slave_priv服务器管理
SHWO DATABASESShow_db_priv查看数据库
SHUTDOWNShutdown_priv关闭服务器
SUPERSuper_priv超级权限

<1> 授权,语法格式:GRANT priv_type [(column_list)] ON database.table TO user [IDENTIFIED BY [PASSWORD] 'password'] [,user [IDENTIFIED BY [PASSWORD] 'password']]... [WITH with_option [with_option]...] priv_type是权限类型,column_list是权限作用于哪些列上没有该参数时作用于整个表上,user是由用户名和主机构成,password是用户新密码

WITH 关键字后面带有一个或多个 with_option 参数,这个参数有 5 个选项 :
GRANT OPTION : 被授权的用户可以将这些权限赋予别的用户
MAX_QUERIES_PER_HOUR count : 设置每个小时可以允许执行 count 次查询
MAX_UPDATES_PER_HOUR count : 设置每个小时可以允许执行 count 次更新
MAX_CONNECTIONS_PER_HOUR count : 设置每小时可以建立 count 连接
MAX_USER_CONNECTIONS count : 设置每个用户可以同时具有的 count 个连接数
mysql> GRANT SELECT、UPDATE ON *.* TO 'test5'@'localhost' IDENTIFIED BY 'test5' WITH GRANT OPTION;

mysql> grant all privileges on *.* to 'alex'@'%' identified by '123456' with grant option;

all privileges : 表示将所有权限授予给用户。也可指定具体的权限,如 : SELECT、CREATE、DROP等
on : 表示这些权限对哪些数据库和表生效,格式 : 数据库名.表名,这里写“*”表示所有数据库,所有表。如果要指定将权限应用到test库的user表中,可以这么写 : test.user
to : 将权限授予哪个用户,格式 : ”用户名”@”登录IP或域名”。%表示没有限制,在任何主机都可以登录。比如 : ”alex”@”192.168.0.%”,表示alex这个用户只能在 192.168.0IP段登录
identified by : 指定用户的登录密码
with grant option : 表示允许用户将自己的权限授权给其它用户

7> 回收权限,语法格式 : REVOKE priv_type [(column_list)]... ON database.table FROM user [,user] ...
     回收全部权限的语法格式 : REVOKE ALL PRIVILEGES,GRANT OPTION FROM user [,user]...
mysql> REVOKE UPDATE ON *.* FROM 'test5'@'localhost';
mysql>  REVOKE ALL PRIVILEGES,GRANT OPTION FROM 'test5'@'localhost';

8> 查看权限,语法格式 : SELECT * FROM mysql.user;
mysql> SELECT user,host FROM mysql.user;
+---------------+-----------+
| user          | host      |
+---------------+-----------+
| root          | %         |
| mysql.session | localhost |
| mysql.sys     | localhost |
| root          | localhost |
+---------------+-----------+
4 rows in set (0.00 sec)

mysql> SHOW GRANTS FOR 'username'@'hostname';
mysql> SHOW GRANTS FOR 'root'@'localhost'

9> 刷新权限 : 对用户做了权限变更之后,一定记得重新加载一下权限,将权限信息从内存中写入数据库
mysql> flush privileges;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值