首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >MYSQL-用户 (User)和权限(Privilege)

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

作者头像
运维小路
发布2025-09-30 15:38:20
发布2025-09-30 15:38:20
1480
举报
文章被收录于专栏:运维小路运维小路

作者介绍:简历上没有一个精通的运维工程师,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

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

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的版本里面,如果是一个账号他是可能存在多条记录的,因为存在允许不同的登录地址。

代码语言:javascript
复制
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.创建用户

代码语言:javascript
复制
CREATE USER 'username'@'主机' IDENTIFIED BY '密码';

username:自己指定的账号。

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

代码语言:javascript
复制
#支持
192.168.1.%
#不支持
192.168.1.0/24

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

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

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

2.修改密码

代码语言:javascript
复制
ALTER USER 'username'@'host' IDENTIFIED BY 'new_password';

3.权限管理

代码语言:javascript
复制
-- 授予所有数据库的所有权限,等于超级管理员
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.一条命令完成

代码语言:javascript
复制
#个人一般都用这个方法 
GRANT ALL PRIVILEGES ON mydatabase.* 
TO 'newuser'@'localhost' 
IDENTIFIED BY 'SecurePassword123!';
代码语言:javascript
复制
#刷新权限,有些不刷新也可以,但是好多教程都会写刷新这个命令 
FLUSH PRIVILEGES;
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-09-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 运维小路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • MongoDB
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档