MySQL用户权限管理你知道多少?

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: MySQL用户权限管理你知道多少?

1. MySQL用户管理

一、MySQL用户的特点和注意事项

MySQL是多用户的数据库管理系统,可以通过授予或撤销权限来控制允许或不允许用户执行的操作

用户从职权上可分为超级用户和普通用户

root用户不同于操作系统的root用户,默认对所有数据库和表具有完全访问权限

普通用户在创建数据库时具有连接数据库的权限,仅对information_schema数据库中的表的部分行具有读取权限(select)

对于实际的生产库,应尽量避免应用程序使用root用户直接操纵数据库

应根据业务需求建立普通用户并授权使其能够完成权限内的任务,防止未经授权用户访问超出其特权的数据

2. MySQL用户验证的三个基本要素

MySQL 使用“用户名”、“客户端主机”和“密码” 三个基本要素来验证用户

MySQL数据库使用“用户名”和“客户端主机”来区分不同的用户,例如:root@192.168.2.3和root@localhost为不同的用户

MySQL的用户以行的形式存放在mysql数据库的user表中

查看MySQL用户

mysql> select user,host,authentication_string from mysql.user;

mysql> select * from mysql.user\G

*_priv 字段中的值 Y 表示已具有相应权限。root 帐户具有完全访问权限,该帐户的所有权限列的值均为 Y ,新建的普通用户liu均为N

客户端主机(host)的含义

MySQL早期应用于超市,每个pos机具有不同的IP,客户希望能够区分来自于不同pos机的刷卡记录,不希望收银员在超市以外的地方访问MySQL数据库,因此MySQL使用host列来限制客户机连接数据库以提高安全性,只有host列中指定的IP或主机名才能使用用户名和密码连接数据库。例如:用户知道root@localhost的密码,但是用户想从远程主机(IP:192.168.2.1)来连接数据库是不会成功的。

允许的客户端主机名(host)格式示例:

主机名:localhost

合格的主机名:mis.offcn.com

IP 地址:192.168.2.1

IP 网络地址加掩码:10.1.100.0/255.255.255.0

模式或通配符:% (任意字符) 或 _ (任意1个字符)

%.offcn.com

192.168.%

192.168.2.1_

%

使用包含 % 通配符字符的host允许用户从整个域或子网中的任何主机连接数据库,存在潜在安全隐患

3. MySQL创建用户

语法:

create user ‘username’@ ‘host‘ identified by ‘password’;

username最长16个字符,如果包含特殊字符如:下划线 _ 必须使用单引号,如果没有单引号可选,password必须用单引号括起来,否则报错

示例:

create user zhang@localhost identified by ‘zhang’;

create user ma identified by ‘ma’;

create user ‘tom’@’192.168.2.1’identified by ‘tom’;

测试连接

本地

#>mysql -uzhang –p   --可以本地连接

#>mysql -uma –p        --可以本地连接

#>mysql -utom -p       --不可以本地连接,因为只能ip为192.168.2.1的主机连接

4. MySQL设置用户密码

修改自己的密码

mysql> set password=password(‘newpass’);

password为口令函数,把口令加密存放在mysql数据库的user表的authentication_string列中

修改其他用户密码(要有相应权限)

mysql> set password for ‘username’@‘host’= (‘newpass’);

示例:

mysql>set password for tom@192.168.2.1=password(‘newpass’);

mysql>set password=password(‘root’);

5. MySQL重命名用户

使用rename user命令可以给用户名和客户端主机改名

示例:把tom@192.168.2.1 改名为 tim@localhost

mysql> rename user tom@192.168.2.1 to tim@localhost;

6. MySQL删除用户

使用drop user语句可以删除用户

示例删除用户tim@localhost

mysql> drop user tim@localhost;

7. MySQL权限

8. MySQL GRANT授权语句

grant语句可以用来创建用户也可以修改用户的权限

grant语法:

grant 权限(colname) on <dbname>.<tabname> to username@host identified by ‘password’;

示例,创建用户wang,可以select test库的stu表的sno列:

grant select(sno) on test.stu to wang@localhost identified by ‘wang’;

测试 (wang)

mysql -uwang –p

mysql> show databases;

mysql>use test;

mysql>show tables;

mysql> select * from stu; --报错,只能看sno这列的内容

mysql> select sno from stu;

测试 (root)

mysql> select * from mysql.tables_priv where user=‘wang’;

mysql> select * from mysql.columns_priv where user=‘wang’;

9. MySQL显示用户权限

使用show grants语句查看用户拥有的权限

测试(root)

mysql> show grants;                                  --查看自己所拥有的权限

mysql> show grants for wang@localhost; --查看用户wang的权限

10. MySQL REVOKE撤销授权语句

revoke语句可以用来创建用户也可以修改用户的权限

grant语法:

revoke 权限(colname) on <dbname>.<tabname> from username@host;

示例(root),收回用户wang的select test库的stu表的sno列权限:

mysql> revoke select(sno) on test.stu from wang@localhost;

mysql> show grants for wang@localhost;

11. MySQL授权表

MySQL服务器启动以后会将下列授权表读取到内存中,作为权限控制的依据

对于全局级别权限的变更和用户密码的变更,需要用户退出会话连接重新登录后才能生效

12. MySQL用户验证流程

13. MySQL 查看进程状态

MySQL数据库用show processlist查看服务器进程个用户连接线程的状态

SHOW PROCESSLIST 将生成以下列:

Id:      用户连接标识符

User:    发出语句的 MySQL 用户

Host:    发出语句的客户机的主机名

db:      用户选择的数据库,未选为 NULL

Command: 线程正在执行的命令类型

Time:    线程处于当前状态的时间(秒)

State:   指示线程正在执行的内容的操作、事件或状态

Info:    线程正在执行的语句;否则为 NULL

查看当前用户连接标识符(id)

mysql> select connection_id();

可以用kill命令杀掉用户连接

mysql> kill 3; --当前连接被杀掉会自动重连

mysql> show processlist;

授予普通用户wang查看当前所有连接用户线程的状态(普通用户仅能看到自己的连接线程状态)

mysql> grant process on . to li@localhost;

mysql> show grants for li@localhost;

mysql> revoke process on . from li@localhost;

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
6月前
|
SQL 关系型数据库 MySQL
mysql用户权限设置
mysql用户权限设置
161 1
|
6月前
|
存储 关系型数据库 MySQL
mysql(三)用户权限管理
为什么要设置用户权限?MySQL设置用户管理权限的主要目的是为了确保数据库的安全性和数据的机密性。以下是一些原因。
246 1
mysql(三)用户权限管理
|
5月前
|
关系型数据库 MySQL 数据库
5.Mysql 用户权限管理
5.Mysql 用户权限管理
30 0
|
SQL 关系型数据库 MySQL
MySQL 数据控制语言(DCL):管理用户权限
MySQL 是一个强大的关系型数据库管理系统,提供了丰富的功能和选项来管理数据库和用户。数据库管理员(DBA)通常使用数据控制语言(Data Control Language,简称 DCL)来管理用户的权限和访问。 本文将详细介绍 MySQL DCL 的基本概念,包括如何创建用户、授权和撤销权限等,同时提供示例代码以帮助您更好地理解。
346 2
|
关系型数据库 MySQL 数据安全/隐私保护
mysql权限管理查看用户权限
mysql权限管理查看用户权限
120 0
|
6月前
|
SQL 关系型数据库 MySQL
MySQL用户管理 用户权限控制(DCL语句)
MySQL用户管理 用户权限控制(DCL语句)
58 0
|
存储 关系型数据库 MySQL
MySQL触发器以及用户权限
MySQL触发器以及用户权限
204 0
|
存储 编解码 关系型数据库
案例分享:Qt激光加工焊接设备信息化软件研发(西门子PLC,mysql数据库,用户权限控制,界面设计,参数定制,播放器,二维图,rgv小车,期限控制,参数调试等)
国产大型机床中Qt上位机激光焊接系统软件案例分享,介绍了Qt在国产化机床上的各种应用案例,并附上案例的具体功能界面供大家学习
案例分享:Qt激光加工焊接设备信息化软件研发(西门子PLC,mysql数据库,用户权限控制,界面设计,参数定制,播放器,二维图,rgv小车,期限控制,参数调试等)
|
安全 关系型数据库 MySQL
mysql:MySQL数据库修改用户权限(远程访问权限、操作权限)
mysql:MySQL数据库修改用户权限(远程访问权限、操作权限)
2545 0
mysql:MySQL数据库修改用户权限(远程访问权限、操作权限)
|
关系型数据库 MySQL 数据库
MySQL配置用户权限(mysql5.*及mysql8.*+)
MySQL配置用户权限(mysql5.*及mysql8.*+)
382 0