1.创建数据库
mysql -h localhost -u root -p --登录数据库
show databases; --显示当前存在的数据库
use tym; -- 使用数据库
--创建test_one数据库
mysql> create table test_one (
-> id int,
-> name varchar(20)
-> );
2.查看用户
-- 查看数据库中所有用户
mysql> SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;
+-------------------------------+
| query |
+-------------------------------+
| User:'tym'@'%'; |
| User:'mysql.sys'@'localhost'; |
| User:'root'@'localhost'; |
+-------------------------------+
-- 当前用户是管理员账户
select user();
+----------------+
| user() |
+----------------+
| root@localhost |
+----------------+
3.增加用户
create user 'tym111'@'localhost' identified by '123pwd';
--默认是usage权限,该权限只能用于数据库登陆,不能执行任何操作;且usage权限不能被回收,也即REVOKE用户并不能删除用户。
mysql> grants for tym111@localhost;
+--------------------------------------------+
| Grants for tym111@localhost |
+--------------------------------------------+
| GRANT USAGE ON *.* TO 'tym111'@'localhost' |
+--------------------------------------------+
flush privileges; --如果修改完权限,记得刷新一下,生效条件如下
3.1
• 执行Grant,revoke,setSassword,renameuser命令修改权限之后,MySQL会自动将修改后的权限信息同步加载到 系统内存中
• 如果执行insert/update/delete操作上述的系统权限表之后,则必须再执行刷 新权限命令才能同步到系统内中,刷新权限命令包括:flush privileges/mysqladmin flush-privileges/mysqladmin reload
• 如果是修改tables和columns级别的权限,则客户端的下次操作新权限就会生 效
• 如果是修改database级别的权限,则新权限在客户端执行use database命令后 生效
• 如果是修改global级别的权限,则需要重新创建连接新权限才能生效
• skip-grant-tables可以跳过所有系统权限表而允许所有用户登录,只在特殊 情况下暂时使用
4.操作
--登录新用户
PS C:\WINDOWS\system32> mysql -u tym111 -p
Enter password: ******
--默认usage权限,只能登录,其余的会报错
mysql> use tym
ERROR 1044 (42000): Access denied for user 'tym111'@'localhost' to database 'tym'
--重新回到root用户赋予权限,记得刷新。
mysql> grant select, delete on tym.test_one to tym111@localhost;
mysql>flush privileges;
--这时候tym111用户权限
mysql> show grants for tym111@localhost;
+------------------------------------------------------------------+
| Grants for tym111@localhost |
+------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'tym111'@'localhost' |
| GRANT SELECT, DELETE ON `tym`.`test_one` TO 'tym111'@'localhost' |
+------------------------------------------------------------------+
--先试试查询权限外的表内容
mysql> use tym
Database changed
mysql> select * from students;
ERROR 1142 (42000): SELECT command denied to user 'tym111'@'localhost' for table 'students'
--再删除test_one表中的内容
mysql> select * from test_one;
+------+-------+
| id | name |
+------+-------+
| 3 | three |
| 1 | one |
| 2 | two |
| 4 | four |
+------+-------+
--权限生效