【2024】MySQL账户管理

当前MySQL版本为:

sql 复制代码
mysql> select version();
+-----------+
| version() |
+-----------+
| 8.4.2     |
+-----------+
1 row in set (0.01 sec)

目录

创建普通用户

使用CREATE USER语句创建用户

sql 复制代码
mysql> CREATE USER 'user01'@'localhost' IDENTIFIED BY '1qaz@WSX';
Query OK, 0 rows affected (1.01 sec)

此sql是创建一个user01的本地用户,密码为1qaz@WSX。

注意确保安全性,密码最好采用8位以上包含大写字母、小写字母、数字和特殊字符。

限制用户连接来源,如本例中的localhost,只允许本地登录;或指定某个某些个IP可登录。

除此之外创建用户时还可以使用加密连接和设置密码过期时间:

  • REQUIRE SSL:指定用户必须使用SSL连接
  • PASSWORD EXPIRE INTERVAL 90 DAY:设置密码过期时间为90天
sql 复制代码
ALTER USER 'user02'@'192.168.10.%' PASSWORD EXPIRE INTERVAL 90 DAY;

为用户授权

MySQL支持在创建用户后为用户赋予相应的权限,比如对数据库的查询、修改等权限。

在MySQL中使用GRANT语句为用户授权。

使用GRANT语句也可以创建用户,但是不建议,建议使用CREATE USER语句创建用户

常见权限主要分为以下:

  • 数据库级别权限:
bash 复制代码
CREATE:创建数据库
ALTER:修改数据库
DROP:删除数据库
SELECT:读取数据库中表数据
INSERT:向数据库中表插入数据
UPDATE:更新数据库中表数据
DELETE:删除数据库中表数据
  • 表级别权限
bash 复制代码
CREATE TABLE:创建表
ALTER TABLE:修改表
DROP TABLE:删除表
  • 其他
bash 复制代码
ALL PRIVILEGES:所有权限

示例:

  • 授予用户user03对database01库的所有权限
sql 复制代码
GRANT ALL PRIVILEGES ON database01.* TO 'user03'@'host';
  • 授予用户对特定数据库的只读权限
sql 复制代码
GRANT SELECT ON database_name.* TO 'username'@'host';
  • 授予用户对特定表的插入和更新权限
sql 复制代码
GRANT INSERT, UPDATE ON database_name.table_name TO 'username'@'host';

查看用户权限

在 MySQL 中,用户信息存储在mysql.user表中。可以通过查询该表来获取有哪些用户

sql 复制代码
mysql>    SELECT user, host FROM mysql.user;
+------------------+-----------+
| user             | host      |
+------------------+-----------+
| mysql.infoschema | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
| root             | localhost |
| user01           | localhost |
+------------------+-----------+
5 rows in set (0.01 sec)

使用SHOW GRANTS语句来查看特定用户的权限。

sql 复制代码
mysql> SHOW GRANTS FOR 'user01'@'localhost';
+--------------------------------------------+
| Grants for user01@localhost                |
+--------------------------------------------+
| GRANT USAGE ON *.* TO `user01`@`localhost` |
+--------------------------------------------+
1 row in set (0.01 sec)

由于未给user01用户授权,所以看不到权限。

修改用户权限

在 MySQL 中可以使用 GRANTREVOKE语句来修改原有用户的权限。

使用GRANT语句添加权限:

给用户 user1 在数据库 mydb 上添加 INSERT 和 UPDATE 权限

sql 复制代码
GRANT INSERT, UPDATE ON mydb.* TO 'user1'@'localhost';

使用REVOKE语句撤销权限:

撤销用户 user1 在数据库 mydb 上的 DELETE 权限

sql 复制代码
REVOKE DELETE ON mydb.* FROM 'user1'@'localhost';

注意:做这些动作时,确保你有足够的权限来操作。

修改用户密码

在 MySQL 中可以使用ALTER USER方法来修改用户密码(进入MySQL中)

使用ALTER USER语句将user01密码改为12#¥qwER

bash 复制代码
mysql> ALTER USER 'user01'@'localhost' IDENTIFIED BY '12#$qwER';
Query OK, 0 rows affected (1.02 sec)

删除用户

在 MySQL 中可以使用DROP USER语句来删除用户。

bash 复制代码
DROP USER 'username'@'host';

删除前要确保其用户是真的用不到的。

相关推荐
王ASC1 小时前
ORA-01461: 仅能绑定要插入 LONG 列的 LONG 值。ojdbc8版本23.2.0.0驱动BUG【已解决】
数据库·sql·oracle
执键行天涯3 小时前
【日常经验】修改大数据量的表字段类型,怎么修改更快
sql
sevevty-seven3 小时前
幻读是什么?用什么隔离级别可以防止幻读
大数据·sql
天涯倦客的美丽人生9 小时前
SQL递归查询树结构语法
数据库·sql
OceanBase数据库官方博客10 小时前
OceanBase 中常用的查询语句
sql·oceanbase·分布式数据库·查询语句
网络安全指导员10 小时前
SQL注入的那些面试题总结
数据库·sql·安全·web安全·系统安全
奈斯ing11 小时前
【Oracle篇】SQL性能优化实战案例(从15秒优化到0.08秒)(第七篇,总共七篇)
运维·数据库·sql·oracle·性能优化
小小宇宙中微子11 小时前
mysql 命名约束
数据库·sql·oracle
盖盖衍上13 小时前
4. SQL视图
数据库·sql
敲敲敲-敲代码16 小时前
【SQL实验】索引操作(菜单操作和命令操作)
数据库·sql·sqlserver