MYSQL-用户 (User)和权限(Privilege)

MySQL用户与权限管理详解

作者介绍:简历上没有一个精通的运维工程师。请点击上方的蓝色《运维小路》关注我,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。、

图片

数据库是一个系统(应用)最重要的资产之一,所以我们的数据库将从以下几个数据库来进行介绍。

MySQL(本章节)

PostgreSQL

MongoDB

Redis

Etcd

前面我们部署的MYSQL的时候系统会默认给我们生成超级管理员,但是在实际使用的时候我们一般并不会直接root账号进行管理,所以本小节我们就来介绍下关于MYSQL的账号及权限。

在我们普通系统登录一般只需要账号密码,在我们的MYSQL里面,这两样东西当然不例外,但是在MYSQL里面还有另外一个配置就是就是允许登录IP地址,我们使用二进制或者YUM安装的MYSQL默认都只能本机连接。所以我们将从下面3个方面来介绍:账号,权限,允许登录IP地址。

账号&密码

账号和密码相对是比较容易理解的,因为任何系统就有,那是不是我们创建任意一个账号他就和超级管理员具有一样的权限么,当然不是的,只是我们一般不会单独创建账号,创建了账号还需要给与他对应的权限。

权限

我们前面介绍了CRUD,这些都是我们权限的一部分,还有一部分叫DDL的权限,DDL(Data Definition Language)用于定义或修改数据库结构,包括创建、修改、删除数据库对象(如表、索引、视图等),还有主从集群里面涉及到复制复制权限。一般而言我们配置的权限主要CRUD和DDL。当然还有一个部分就是权限范围,有些权限是全局的,有些权限只针特定的库甚至数据表的。

允许登录IP地址

默认的MYSQL的root账号只允许本地登录,如果是单体业务,比如早期的LAMP,LNMP,TOMCAT把所有组件都集成到1台服务器上肯定是没问题的,但是随着业务的发展,压力的增大所以分开是必然,所以就必须配置不同的机器上,所以目前就必须要通过网络进行登录。

实操

这个是mysql默认的root账号的相关信息,这里这么多信息,大部分都是关于权限部分。

Host:允许连接地址。

priv:权限部分。

证书部分:一般使用较少。

密码部分:密码插件(国产化的国密插件),过期时间等。

注意:在mysql5.7的版本里面,如果是一个账号他是可能存在多条记录的,因为存在允许不同的登录地址。

mysql> select * from mysql.user\G;
*************************** 1. row ***************************
                  Host: localhost
                  User: root
           Select_priv: Y
           Insert_priv: Y
           Update_priv: Y
           Delete_priv: Y
           Create_priv: Y
             Drop_priv: Y
           Reload_priv: Y
         Shutdown_priv: Y
          Process_priv: Y
             File_priv: Y
            Grant_priv: Y
       References_priv: Y
            Index_priv: Y
            Alter_priv: Y
          Show_db_priv: Y
            Super_priv: Y
 Create_tmp_table_priv: Y
      Lock_tables_priv: Y
          Execute_priv: Y
       Repl_slave_priv: Y
      Repl_client_priv: Y
      Create_view_priv: Y
        Show_view_priv: Y
   Create_routine_priv: Y
    Alter_routine_priv: Y
      Create_user_priv: Y
            Event_priv: Y
          Trigger_priv: Y
Create_tablespace_priv: Y
              ssl_type: 
            ssl_cipher: 
           x509_issuer: 
          x509_subject: 
         max_questions: 0
           max_updates: 0
       max_connections: 0
  max_user_connections: 0
                plugin: mysql_native_password
 authentication_string: *35F3EE2B12D92E07185ECDCF73B8D9DA44DC9655
      password_expired: N
 password_last_changed: 2025-09-16 21:25:14
     password_lifetime: NULL
        account_locked: N

下面如果通实际操作来创建账号及权限等操作。

1.创建用户

CREATE USER 'username'@'主机' IDENTIFIED BY '密码';

username:自己指定的账号。

主机:允许登录的ip地址,注意这里的地址不支持CIDR,只支持通配符。​​​​​​​

#支持
192.168.1.%
#不支持
192.168.1.0/24

%代表允许所有ip地址,慎重使用。

密码:比较老旧的版本没有强密码要求,较新的版本都有。

这个时候创建的用户是没有任何权限的

2.修改密码

ALTER USER 'username'@'host' IDENTIFIED BY 'new_password';

3.权限管理​​​​​​​

-- 授予所有数据库的所有权限,等于超级管理员
GRANT ALL PRIVILEGES ON *.* TO 'username'@'host';

-- 授予特定数据库的所有权限,使用较多的方法 
GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'host';

-- 授予特定权限
GRANT SELECT, INSERT, UPDATE ON database_name.* TO 'username'@'host';
这里的"*.*",前面的*代表所有库,后面的*代表表。

4.一条命令完成

#个人一般都用这个方法 
GRANT ALL PRIVILEGES ON mydatabase.* 
TO 'newuser'@'localhost' 
IDENTIFIED BY 'SecurePassword123!';
​​​​​​​
#刷新权限,有些不刷新也可以,但是好多教程都会写刷新这个命令 
FLUSH PRIVILEGES;

运维小路

一个不会开发的运维!一个要学开发的运维!一个学不会开发的运维!欢迎大家骚扰的运维!

关注微信公众号《运维小路》获取更多内容。

### MYSQL 用户权限 PRIVILEGE_TYPE 官方文档解释 在 MySQL 中,`PRIVILEGE_TYPE` 是用于描述不同类型的权限。这些权限可以分配给用户或角色,以便控制他们对数据库对象的操作范围。 #### 权限分类 MySQL权限分为多个层次: - **全局权限**:适用于整个服务器上的所有数据库- **数据库权限**:仅适用于特定的数据库- **表权限**:仅适用于指定数据库中的某个表。 - **列权限**:仅适用于指定表中的某些列。 - **子程序权限**:针对存储过程函数。 每种权限类型都定义了具体的操作许可,例如 `SELECT`, `INSERT`, `UPDATE`, `DELETE` 等[^2]。 #### 常见权限类型及其含义 以下是几种常见的 `PRIVILEGE_TYPE` 及其作用说明: - **ALL PRIVILEGES**: 授予除 GRANT OPTION 外的所有权限- **CREATE**: 允许创建新的数据库或表。 - **DROP**: 允许删除现有的数据库或表。 - **ALTER**: 修改现有表结构的能力。 - **INDEX**: 创建或丢弃索引的权利。 - **GRANT OPTION**: 将自己的权限授予其他用户的权利。 - **FILE**: 使用 SELECT ... INTO OUTFILE 或 LOAD DATA INFILE 语句访问文件系统的权限。 对于更详细的权限列表以及具体的应用场景,请参阅官方手册关于安全性账户管理的部分[^1]。 #### 特殊引擎相关权限 值得注意的是,在一些特殊情况下,像BLACKHOLE这样的存储引擎也有自己独特的特性。例如,BLACKHOLE 存储引擎会接受但不保存任何写入的数据,这可能影响到涉及该类数据源的操作权限设置[^3]。 ```sql -- 示例:查看当前用户权限 SHOW GRANTS FOR CURRENT_USER; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值