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
0
投稿
猜你喜欢
- golang 1.7版本中context库被很多标准库的模块所使用,比如net/http和os的一些模块中,利用这些原生模块,我们就不需要自
- 正在看的ORACLE教程是:Oracle9iPL/SQL编程的经验小结。平时在PL/SQL中的编程中遇到一些问题,这里以问答的形式来进行把它
- 事务处理的流程示例 database := db.DB tx, err := datab
- sys 模块提供了许多函数和变量来处理 Python 运行时环境的不同部分.处理命令行参数在解释器启动后, argv 列表包含了传递给脚本的
- 最近项目使用c++操作Python脚本,选用boost.python库。在window下编译安装很顺利,但是在Linux下一直编译不通过,总
- 本文实例讲述了python字典基本操作。分享给大家供大家参考。具体如下:d2 = {'spam': 2, 'ham&
- 今天在设置input的readonly属性遇到问题,上网查到下面的内容,作个标记。今天系统需要使用javascript 动态设置textbo
- 虽然说表单验证在客户端使用javascript来验证已经可以了,但是我们为了防止访客绕过客户端验证也为了数据安全最好还是在服务器端加上必要的
- 说明eventlet是一个必备工具,经常用,绿化原理有点忘记了,重新复习一遍.三个主要问题 1. 绿化的原理是什么?2. 绿化怎么
- 1.0tensorflow的安装1.1安装pythonpython下载 需要python3.x<=3.7https://www.pyt
- 本文实例讲述了flask框架jinja2模板与模板继承。分享给大家供大家参考,具体如下:jinja2模板from werkzeug.cont
- 前言最近在学习Python的面向对象编程,以前是没有接触过其它的面向对象编程的语言,因此学习这一部分是相当带劲的,这里也总结一下。概述pyt
- 具体用到了matplotlib.backends.backend_qt5agg.FigureCanvasQTAgg直接上代码(这里给出的只是
- 最近做项目正好需要坐标的转换各地图API坐标系统比较与转换;WGS84坐标系:即地球坐标系,国际上通用的坐标系。设备一般包含GPS芯片或者北
- 本博客详细为你解释 Python Flask 框架下的 HTML 文件压缩内容,其第三方模块也可用在其他框架中。本案例是基于 Python
- 1.使用open()函数打开文件夹在读取一个文件的内容之前,需要先打开这个文件。在Python程序中可以通过内置函数open()来打开一个文
- 学了python后,之前一些我们常用的方法,也可以换一种思路用python中的知识来解决。相信操作出来后,能收获一大批小粉丝们。就像我们没学
- 包括如何处理假的200页面/404智能判断等喜欢用Python写脚本的小伙伴可以跟着一起写一写呀。编写环境:Python2.x00x1:模块
- 一、Python变量在大多数语言中,为一个值起一个名字时,把这种行为称为“给变量赋值”或“把值存储在变量中”。不过,Python与许多其它计
- 由于不同的项目需要用不同的python版本,于是使用Anaconda来进行版本管理,现记录一下经验:在官网下载并安装好Anaconda以后(