MySQL数据库用户权限管理
作者:彭世瑜 发布时间:2024-01-19 00:29:18
标签:MySQL,用户,权限,管理
1、用户管理
mysql的用户信息保存在了mysql.user中:
select * from mysql.user\G
*************************** 5. 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: *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9
password_expired: N
password_last_changed: 2020-02-05 22:46:27
password_lifetime: NULL
account_locked: N
Create_role_priv: Y
Drop_role_priv: Y
Password_reuse_history: NULL
Password_reuse_time: NULL
Password_require_current: NULL
User_attributes: NULL
主要字段:
主机名和用户名共同组成复合主键
Host 主机名,允许访问的客户端,*代表所有客户端都可以访问
User 用户名
1.1、创建用户
方式一:直接使用root用户在mysql.user中插入记录(不推荐)
方式二:使用创建用户的SQL指令
基本语法:
create user 用户 identified by 明文密码
-- 用户 用户名@主机地址
-- 主机地址: '' 或者 %
示例:
create user 'user1'@'%' identified by '123456';
-- 查看mysql.user表中是否存在新用户
select user, host from mysql.user where user = 'user1';
+-------+------+
| user | host |
+-------+------+
| user1 | % |
+-------+------+
简化版创建用户,谁都可以访问,不需要密码,不安全
create user user2;
1.2、删除用户
user和host具有唯一性
基本语法:
drop user 用户名@host;
示例:
mysql> drop user 'user1'@'%';
Query OK, 0 rows affected (0.01 sec)
mysql> select user, host from mysql.user where user = 'user1';
Empty set (0.00 sec)
1.3、修改用户密码
需要使用函数对密码进行加密password()
方式一:使用专门的修改密码指令
基本语法:
set password for 用户 = password(明文密码);
set password for 'user1'@'%' = password(654321);
-- mysql5.7后续版本,8.0可用
alter user 'user1'@'%' identified by '654321';
方式二:使用更新语法
基本语法:
update mysql.user set password = password(明文密码) where user = '' and host = '';
update mysql.user set password = password('123456') where user = 'user1' and host = '%';
-- 8.0报错
update mysql.user set authentication_string = password('123456') where user = 'user1' and host = '%';
2、权限管理
分为三类:
数据权限:增删改查 select update delete insert
结构权限:结构操作(表操作) create drop
管理权限:权限管理 create user、grant、revoke, 管理员
2.1、授予权限 grant
将权限分配给指定用户
基本语法:
grant 权限列表 on 数据库/*.表名/* to 用户
权限列表 使用逗号间隔,all privileges 代表全部权限
所有数据库
*.*
某个数据库:
数据库.*
单表:
数据库.表名
-- 分配权限 不需要刷新,马上生效
grant select on mydatabase.my_student to 'user1'@'%';
2.2、取消权限 revoke
基本语法:
revoke 权限列表 /all privileges on 数据库/*.表/* from 用户
-- 回收权限,不需要刷新,马上生效
revoke all privileges on mydatabase.my_student from 'user1'@'%';
2.3、刷新权限 flush
将操作的具体内容同步到对应的表中
基本语法:
flush privileges;
3、密码丢失的解决方案
如果忘记root用户的密码
# 停止服务
mysql.server stop;
# 停止不了可以直接杀死进程
ps aux|grep mysql
kill <pid>
# 重新启动服务,跳过权限
mysqld --skip-grant-tables
# 直接无用户名登录
mysql
非常危险,任何客户端不需要任何用户信息都可以直接登录,而且是root权限
修改root密码:
alter user 'root'@'localhost' identified by '123456';
修改完后,关闭mysql服务器,重启
来源:https://blog.51cto.com/u_13567403/5366118


猜你喜欢
- 类中定义的方法大致可以分为两类:绑定方法和非绑定方法。其中绑定方法又可以分为绑定到对象的方法和绑定到类的方法。一、绑定方法1 对象的绑定方法
- 本文实例为大家分享了pytorch实现手写数字图片识别的具体代码,供大家参考,具体内容如下数据集:MNIST数据集,代码中会自动下载,不用自
- 文件操作的步骤:打开文件 -> 操作文件 -> 关闭文件切记:最后要关闭文件(否则可能会有意想不到的结果)打开文件文件句柄 =
- 分享一个 * 真网页拾色器(调色板),颜色丰富216色,使用方便。运行截图:<html id="container"
- SQL语句参考及记录集对象详解1. ASP与Access数据库连接:2. ASP与SQL数据库连接:建立记录集对象:set rs=serve
- Tips 1:新增数据表与定义字段更加直观若要建立新数据表,可以在开启数据库后,直接单击“创建”标签,在“表”选项组中单击“表”按钮,即可新
- 多属性排序:把需要排序的属性拿出来作为一个 tuple,主要的放前面,次要的放后面。假如某对象有n个属性,那么先按某规则对属性a进行排序,在
- 目的:了解常用的ORM框架;使用SQLObject框架操作MySQL数据库。面试题:在Python语言中有哪些常用的ORM框架,它们有什么区
- '去掉字符串头尾的连续的回车和空格 function trimVBcrlf(str) tr
- 目录一.定义二.命名方法2.1小驼峰命名法2.2大驼峰命名法2.3下划线命名法三.命名规则3.1标识符3.2关键字四.使用方法4.1单变量赋
- 如果需要在数据库中存储图片或视频类的数据,我们可以配置MEDIA.下面的示例将以上传一张图片的形式来说明MEDIA的配置及用法.第一步 se
- 我们的浏览器访问网站时,默认为发送了一个HTTP的GET请求。在浏览网站时,会经常填写表单,比如填写用户名密码。点击登录后,会跳转到我们的主
- 引言: 由于MySQL的数据库太大,默认安装的/var盘已经再也无法容纳新增加的数据,没有办法,只能想办法转移数据的目录。 下面我整理一下把
- 本文实例讲述了Python基于pandas实现json格式转换成dataframe的方法。分享给大家供大家参考,具体如下:# -*- cod
- 将np图片(imread后的图片)转码为base64格式def image_to_base64(image_np):image = cv2.
- 下面这几个小问题都是基于 InnoDB 存储引擎的。1. ID最大的记录删除后,新插入的记录ID是什么例如当前表中有ID为1,2,3三条记录
- 判断服务器是否安装了某种asp组件,比较常用的代码如下:代码如下:<% '功能:检查是否存在系统组件或组件是否安装成功
- 今天继续给大家介绍MySQL相关知识,本文主要内容是MySQL外键约束详解。一、MySQL外键约束作用外键约束(Foreign Key)即数
- 1、range函数range(起始值,终点值,间隔)终点值不一定是最后一个取到的值得到的是range类的对象,最后用list转换为【】,In
- 成天都要与样式打交道的朋友,相信对CSS选择符(CSS Selectors)都不会陌生。不过对于刚接触或者还不是很熟悉css的朋友来说,能够