mysql> use mysql;Database changedmysql> select host,user,authentication_string from user;+-----------+---------------+-------------------------------------------+| host | user | authentication_string |+-----------+---------------+-------------------------------------------+| localhost | root | * 81 F5E21E35407D884A6CD4A731AEBFB6AF209E1B || localhost | mysq l .session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE || localhost | mysql .sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |+-----------+---------------+-------------------------------------------+-- 可以通过 desc user 初步查看一下表结构
host : 表示这个用户可以从哪个主机登陆,如果是 localhost ,表示只能从本机登陆user : 用户名authentication_string : 用户密码通过 password 函数加密后的*_priv : 用户拥有的权限
语法:
create user ' 用户名 ' @ ' 登陆主机 /ip' identified by ' 密码 ' ;
案例:
mysql> create user 'wmh' @ 'localhost' identified by '12345678' ;Query OK, 0 rows affected ( 0.06 sec)mysql> select user,host,authentication_string from user;+---------------+-----------+-------------------------------------------+| user | host | authentication_string |+---------------+-----------+-------------------------------------------+| root | % | *A2F7C9D334175DE9AF4DB4F5473E0BD0F5FA9E75 || mysql .session | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE || mysql .sys | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE || wmh | localhost | * 84 AAC12F54AB666ECFC2A83C676908C8BBC381B1 | -- 新增用户+---------------+-----------+-------------------------------------------+4 rows in set ( 0.00 sec)
语法:
drop user ' 用户名 ' @ ' 主机名'
示例:
mysql> select user,host,authentication_string from user;+---------------+-----------+-------------------------------------------+| user | host | authentication_string |+---------------+-----------+-------------------------------------------+| root | % | *A2F7C9D334175DE9AF4DB4F5473E0BD0F5FA9E75 || mysql .session | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE || mysql .sys | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE || wmh | localhost | * 84 AAC12F54AB666ECFC2A83C676908C8BBC381B1 |+---------------+-----------+-------------------------------------------+4 rows in set ( 0.00 sec)mysql> drop user wmh; -- 尝试删除ERROR 1396 (HY000): Operation DROP USER failed for 'wmh' @ '%' -- <= 直接给个用户名,不能删除,它默认是% ,表示所有地方可以登陆的用户
mysql> drop user 'wmh' @ 'localhost' ; -- 删除用户Query OK, 0 rows affected ( 0.00 sec)mysql> select user,host,authentication_string from user;+---------------+-----------+-------------------------------------------+| user | host | authentication_string |+---------------+-----------+-------------------------------------------+| root | % | *A2F7C9D334175DE9AF4DB4F5473E0BD0F5FA9E75 || mysql .session | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE || mysql .sys | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |+---------------+-----------+-------------------------------------------+3 rows in set ( 0.00 sec)
set password=password( ' 新的密码 ' );
root用户修改指定用户的密码
set password for '用户名'@'主机名'=password('新的密码');
mysql> select host,user, authentication_string from user;+-----------+---------------+-------------------------------------------+| host | user | authentication_string |+-----------+---------------+-------------------------------------------+| % | root | *A2F7C9D334175DE9AF4DB4F5473E0BD0F5FA9E75 || localhost | mysql .session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE || localhost | mysql .sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE || localhost | wmh | * 84 AAC12F54AB666ECFC2A83C676908C8BBC381B1 |+-----------+---------------+-------------------------------------------+4 rows in set ( 0.00 sec)mysql> set password for 'wmh' @ 'localhost' =password( '87654321' );Query OK, 0 rows affected, 1 warning ( 0.00 sec)mysql> select host,user, authentication_string from user;+-----------+---------------+-------------------------------------------+| host | user | authentication_string |+-----------+---------------+-------------------------------------------+| % | root | *A2F7C9D334175DE9AF4DB4F5473E0BD0F5FA9E75 || localhost | mysql .session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE || localhost | mysql .sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE || localhost | wmh | * 5 D24C4D94238E65A6407DFAB95AA4EA97CA2B199 |+-----------+---------------+-------------------------------------------+4 rows in set ( 0.00 sec)
grant 权限列表 on 库 . 对象名 to ' 用户名 ' @ ' 登陆位置 ' [identified by ' 密码 ' ]
权限列表,多个权限用逗号分开
*.* : 代表本系统中的所有数据库的所有对象(表,视图,存储过程等)库 .* : 表示某个数据库中的所有数据对象 ( 表,视图,存储过程等 )identified by 可选。 如果用户存在,赋予权限的同时修改密码 , 如果该用户不存在,就是创建用户
案例:
-- 使用 root 账号-- 终端 Amysql> show databases;+--------------------+| Database |+--------------------+| information_schema || 57 test || bit_index || ccdata_pro || innodb_test || musicserver || myisam_test || mysql || order_sys || performance_schema || scott || sys || test || vod_system |+--------------------+14 rows in set ( 0.00 sec)mysql> use test;Database changedmysql> show tables;+----------------+| Tables_in_test |+----------------+| account || student || user |+----------------+3 rows in set ( 0.01 sec)-- 给用户 wmh 赋予 test 数据库下所有文件的 select 权限mysql> grant select on test.* to 'wmh' @ 'localhost' ;Query OK, 0 rows affected ( 0.01 sec)-- 使用 wmh 账号-- 终端 Bmysql> show databases;+--------------------+| Database |+--------------------+| information_schema |+--------------------+1 row in set ( 0.00 sec)-- 暂停等 root 用户给 wmh 赋完权之后,在查看mysql> show databases;+--------------------+| Database |+--------------------+| information_schema || test | -- 赋完权之后,就能看到新的表+--------------------+2 rows in set ( 0.01 sec)mysql> use test;Reading table information for completion of table and column namesYou can turn off this feature to get a quicker startup with -ADatabase changedmysql> show tables;+----------------+| Tables_in_test |+----------------+| account || student || user |+----------------+3 rows in set ( 0.00 sec)mysql> select * from account;+----+--------+---------+| id | name | blance |+----+--------+---------+| 2 | 李四 | 321.00 || 3 | 王五 | 5432.00 || 4 | 赵六 | 543.90 || 5 | 赵六 | 543.90 |+----+--------+---------+4 rows in set ( 0.00 sec)-- 没有删除权限mysql> delete from account;ERROR 1142 ( 42000 ): DELETE command denied to user 'wmh' @ 'localhost' for table'account'备注:特定用户现有查看权限mysql> show grants for 'wmh' @ '%' ;+-----------------------------------------------+| Grants for wmh@% |+-----------------------------------------------+| GRANT USAGE ON *.* TO 'wmh' @ '%' || GRANT ALL PRIVILEGES ON `test`.* TO 'wmh' @ '%' |+-----------------------------------------------+2 rows in set ( 0.00 sec)mysql> show grants for 'root' @ '%' ;+-------------------------------------------------------------+| Grants for root@% |+-------------------------------------------------------------+| GRANT ALL PRIVILEGES ON *.* TO 'root' @ '%' WITH GRANT OPTION |+-------------------------------------------------------------+1 row in set ( 0.00 sec)
注意:如果发现赋权限后,没有生效,执行如下指令:
flush privileges;
语法 :
revoke 权限列表 on 库 . 对象名 from ' 用户名 ' @ ' 登陆位置 ' ;
示例:
-- 回收 wmh 对 test 数据库的所有权限--root 身份,终端 Amysql> revoke all on test.* from 'wmh' @ 'localhost' ;Query OK, 0 rows affected ( 0.00 sec)--wmh 身份,终端 Bmysql> show databases;+--------------------+| Database |+--------------------+| information_schema || test |+--------------------+2 rows in set ( 0.00 sec)mysql> show databases;+--------------------+| Database |+--------------------+| information_schema |+--------------------+1 row in set ( 0.00 sec)