MySQL的用户管理

1.MySQL 的权限语法

如果只使用 root 用户,就存在安全隐患,这点在 Linux 系统本身就体现出来了,MySQL 也有类似的问题,因此也有自己的账户管理。

我们前面铺垫过一个事情,MySQL 本质是在管理一些表的相关文件,文件在 Linux 中怎么区分用户?那不就是调用 Linux 本身的文件权限等接口么?

# MySQL 的用户表
mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;
+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| user                      |
+---------------------------+
31 rows in set (0.00 sec)

mysql> select * from user\G
# ...

MySQL 的用户本身也是以一个表的形式来管理的,而创建用户实际上就是插入用户的名字、权限、密码插入到 user 中(最简单粗暴的做法也是这样的,但是一般没必要)。

之后要提到的相关命令,往深处也是对 user 表做增删查改。

# MySQL 用户语法
# (1)重新加载授权表
FLUSH PRIVILEGES;
# (2)创建用户
CREATE USER 'user_name'@'登录主机/ip' IDENTIFIED BY 'password'; # 如果是 Windows 是不行的,Windows 的是私有 IP,设置为具体 IP 是没有意义的,因此有些时候会使用 %,但是一般也不使用 %
# (3)删除用户
DROP USER 'user_name'@'登录主机/ip';
# (4)修改用户的密码
ALTER USER 'username'@'host' IDENTIFIED BY 'new_password';
UPDATE USER SET authentication_string=password('new_password') where user='user_name'; 
SET password=password('new_password'); # 只设置当前用户密码
SET PASSWORD for 'user_name'@'主机名'=password('new_password');
# (5)查看当前用户
SELECT USER();

补充:MySQL 对密码的管理是会进行明文加密的。

2.MySQL 的权限列表

权限 列名 作用
CREATE Create_priv 数据库、表或索引
DROP Drop_priv 数据库或表
GRANT OPTION Grant_priv 数据库、表或索引权限的授权
REFERENCES References_priv 数据库或表
ALTER Alter_priv
DELETE Delete_priv
INDEX Index_priv
INSERT Insert_priv
SELECT Select_priv
UPDATE Update_priv
CREATE VIEW Create_view_priv 视图
SHOW VIEW Show_view_priv 视图
ALTER ROUTINE Alter_routine_priv 存储的程序
CREATE ROUTINE Create_routine_priv 存储的程序
EXECUTE Execute_priv 存储的程序
FILE File_priv 服务器主机上的文件访问
CREATE TEMPORARY TABLES Create_tmp_table_priv 临时表
LOCK TABLES Lock_tables_priv 表的锁定
CREATE USER Create_user_priv 用户帐号
PROCESS Process_priv 进程信息
RELOAD Reload_priv 服务器的重载
REPLICATION CLIENT Repl_client_priv 复制客户端
REPLICATION SLAVE Repl_slave_priv 复制从库
SHOW DATABASES Show_db_priv 数据库列表
SHUTDOWN Shutdown_priv 服务器的关闭
SUPER Super_priv 超级权限

刚刚创建的用户没有任何权限,需要 root 使用 GRANT 权限列表 ON 库.对象名 TO '用户名'@'登陆位置' [IDENTIFIED BY '密码'] 来赋予。

  • GRANT:权限列表,用多个权限用逗号分开

    # 权限列表
    grant select on ...
    grant select, delete, create on ....
    grant all [privileges] on ... # 表示赋予该用户在该对象上的所有权限
    
  • *.* :代表本系统中的所有数据库的所有对象(表,视图,存储过程等)

  • 库.*:表示某个数据库中的所有数据对象(表,视图,存储过程等)

  • IDENTIFIED BY :可选,如果用户存在,赋予权限的同时修改密码,如果该用户不存在,就会创建用户并且设置对应的密码

而可以使用 REVOKE 权限列表 ON 库.对象名 FROM 'user_name'@'登陆位置';回收权限。

相关推荐

  1. MySQL用户管理

    2024-03-11 12:32:06       44 阅读
  2. 06.MySQL用户和权限管理

    2024-03-11 12:32:06       53 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-11 12:32:06       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-11 12:32:06       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-11 12:32:06       87 阅读
  4. Python语言-面向对象

    2024-03-11 12:32:06       96 阅读

热门阅读

  1. 阅读 Shell 脚本

    2024-03-11 12:32:06       40 阅读
  2. 【系统架构设计师考试大纲】

    2024-03-11 12:32:06       37 阅读
  3. 11_Http

    11_Http

    2024-03-11 12:32:06      46 阅读
  4. 少儿编程机器人软件的开发技术

    2024-03-11 12:32:06       43 阅读
  5. 从云计算到边缘计算:技术演进的下一个风口

    2024-03-11 12:32:06       49 阅读
  6. 云计算中仲裁节点和仲裁可用区介绍

    2024-03-11 12:32:06       52 阅读
  7. (二)PySpark3:SparkSQL编程

    2024-03-11 12:32:06       37 阅读
  8. Apache Spark 的基本概念和在大数据分析中的应用

    2024-03-11 12:32:06       40 阅读
  9. git push 跟 git push origin master的区别

    2024-03-11 12:32:06       48 阅读
  10. STM32使用定时器驱动电机

    2024-03-11 12:32:06       42 阅读
  11. 开源openGauss数据库中事务管理源码解析

    2024-03-11 12:32:06       45 阅读