mysql创建新用户、数据库权限分配

创建用户

1、查看已经存在的用户

-- 查看有哪些用户
SELECT * FROM mysql.user

2、创建新的用户user1

-- 创建用户并给所有IP的权限(CREATE USER 'jeffrey'@'localhost' IDENTIFIED BY 'password';)
CREATE USER 'user1'@'%' IDENTIFIED BY 'user1paasword';

3、查看用户的权限

-- 查看`user1`用户权限
SHOW GRANTS FOR 'user1'@'%';

授予权限

1、为已存在的用户赋权
1.1、授予 xxx 用户对数据库 test读权限(针对的是已经存在的用户)

GRANT SELECT ON test.* TO 'xxx'@'%';

1.2、为 xxx 用户授予所有数据库全部权限(针对的是已经存在的用户)

GRANT ALL PRIVILEGES ON *.* TO 'xxx'@'%';

2、自动创建用户赋权
GRANT 为一个不存在的用户授予权限时,默认并不会自动创建用户。该行为受SQL Mode中的 NO_AUTO_CREATE_USER控制。
如果从 SQL Mode 中去掉 NO_AUTO_CREATE_USER,当 GRANT 的目标用户不存在时,TiDB 会自动创建用户。
2.1、查看当前sql的设置

mysql> select @@sql_mode;
| @@sql_mode                                                                                                                                |
+-------------------------------------------------------------------------------------------------------------------------------------------+
| ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+-------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

2.2、去掉 NO_AUTO_CREATE_USER,重新设置sql_mode支持自动创建用户

set @@sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';

2.3、test数据库赋权自动创建用户xxxx,密码yyyyy

GRANT ALL PRIVILEGES ON test.* TO 'xxxx'@'%' IDENTIFIED BY 'yyyyy';

2.4、查看赋予的权限

SELECT user,host FROM mysql.user WHERE user='xxxx';
+------|------+
| user | host |
+------|------+
| xxxx | %    |
+------|------+
1 row in set (0.00 sec)

收回权限

REVOKE语句与 GRANT 对应

  • 注:REVOKE 收回权限时只做精确匹配,若找不到记录则报错。而 GRANT 授予权限时可以使用模糊匹配。

1、回收user1test数据库的all权限

-- REVOKE ALL PRIVILEGES ON `test`.* FROM 'genius'@'localhost';
REVOKE ALL PRIVILEGES ON `test`.* FROM 'user1'@'%';

2、查看user1的权限

SHOW GRANTS for 'user1'@'%';

创建用户分配权限常用命令

-- 查看有哪些用户
SELECT * FROM mysql.user

-- 创建用户并给所有IP的权限(CREATE USER 'jeffrey'@'localhost' IDENTIFIED BY 'password';CREATE USER 'user1'@'%' IDENTIFIED BY 'user1paasword';

-- 查看用户权限
SHOW GRANTS FOR 'user1'@'%';

-- 撤销账户全局特权 REVOKE收回权限时只做精确匹配
REVOKE ALL PRIVILEGES ON 数据库.*  FROM 'user1'@'%';

-- 修改密码
ALTER USER 'user1'@'%' IDENTIFIED BY 'user1paaswordnew';

-- 用户赋权(GRANT ALL PRIVILEGES ON *.* TO 'xxx'@'%';GRANT ALL PRIVILEGES ON *.* TO 'user1'@'%'; -- 给user1用户所有数据库的全部权限
GRANT ALL PRIVILEGES ON 数据库.* TO 'user1'@'%';

mysql官网参考
tidb官网参考

你可能感兴趣的:(TiDB,Mariadb,MySQL)