当前位置: 首页 > news >正文

MySQL 用户管理操作

目录

一、用户管理概述

二、用户管理

1、创建用户

2、删除用户

三、账户密码管理

1、root用户修改自己的密码

2、ROOT用户修改其他普通用户密码

3、普通用户修改自己的密码

 4、ROOT用户密码忘记解决办法

1)Linux系统

2)windows系统

四、用户权限

1、授予权限

2、查看权限

3、撤销权限


一、用户管理概述

MySQL是一个多用户的数据库,具有强大的访问控制系统,可以为不同用户指定允许的权限,MySQL用户可以分为普通用户和修改用户的密码等管理权限;普通用户只拥有被授予的各种权限。用户管理包括管理用户账户、权限等。

二、用户管理

1、创建用户

基本语法1---这也是最推荐使用的一种方法

CREATE USER <'用户名'@'地址'> IDENTIFIED BY ‘密码’;

 eg:

mysql> create user 'test_user'@'localhost' identified by 'test@123';
Query OK, 0 rows affected (0.00 sec)

 基本语法2---此方法慎用,因为user系统表中存储了全局级别的权限,以及影响其他账户的信息,如果破坏了user表中的记录,可能会对MySQL服务器造成很大的影响。

insert into MySQL.user(Host,User,Password) values
('host','username',PASSWORD('password'));

基本语法三---推荐使用,同时可以给用户授权于权限

GRANT SELECT ON *.* TO '用户名'@'主机名' IDENTIFIED BY '密码';
FLUSH PRIVILEGES;

2、删除用户

基本语法1---推荐使用

drop user '用户名'@'主机号';

 eg:

mysql> drop user 'test_user'@'localhost';
Query OK, 0 rows affected (0.00 sec)
删除前查看用户表
mysql> select Host,User from mysql.user;
+-----------+-----------+
| Host      | User      |
+-----------+-----------+
| %         | root      |
| localhost | mysql.sys |
| localhost | root      |
| localhost | test_user |
+-----------+-----------+
4 rows in set (0.00 sec)
删除后查看用户表
mysql> select Host,User from mysql.user;
+-----------+-----------+
| Host      | User      |
+-----------+-----------+
| %         | root      |
| localhost | mysql.sys |
| localhost | root      |
+-----------+-----------+
3 rows in set (0.00 sec)

 基本语法2

delete from mysql.user where User='要删除的用户名' and Host='要删除的用户的主机名';

三、账户密码管理

1、root用户修改自己的密码

语法1

mysqladmin -u root -h localhost -p password '新密码';

 eg:

[root@master ~]#  mysqladmin -u root -h localhost -p password 'fzw@123';
Enter password: 

语法2

update mysql.user set Password=PASSWORD("新密码") where User="root" and Host="localhost";
#修改完刷新一遍
FLUSH PRIVILEGES;

 语法3

set PASSWORD=PASSWORD("新密码");

2、ROOT用户修改其他普通用户密码

 语法1

set PASSWORD FOR '用户名'@'主机名' =PASSWORD("新密码");

语法2

update mysql.user set Password=PASSWORD("新密码")
where Host='主机号' and User='用户名';

 语法3

grant usage on *.* to '用户名'@'主机号' identifed by '新密码';

3、普通用户修改自己的密码

语法

set PASSWORD=PASSWORD('新密码');

 4、ROOT用户密码忘记解决办法

1)Linux系统

先关闭mysql服务器

[root@master ~]# systemctl stop mysqld

在/etc/my.cnf文件中添加下面命令

vim /etc/my.cnf#在该文件[mysql]标签下任意位置添加此命令
skip-grant-tables

 保存后退出

启动mysql服务器,再次登录mysql就不需要输入密码了,然后再用上面修改密码的方式,任意一种,再去/etc/my.cof文件中删除刚才的命令,保存退出,重启一次mysql服务器

[root@master ~]# systemctl start mysqld #启动MySQL服务器
[root@master ~]# systemctl restart mysqld #重启MySQL服务器

2)windows系统

第一步、停止MySQL服务器

net stop MySQL

第二步、在输入mysqld --skip-grant-table

 

再次登录mysql就不用输入密码了 ,然后登录成功用上面的任意一种方法修改用户的密码。

四、用户权限

1、授予权限

基本语法

grant 权限列表 on 库名.表名 to 用户名@'客户端主机'
[identified by '密码' with option参数];

权限列表:可以根据需求给该用户什么权限

option参数:

GRANT OPTION: 授权选项

MAX_QUERIES_PER_HOUR: 定义每小时允许执行的查询数

MAX_UPDATES_PER_HOUR: 定义每小时允许执行的更新数

MAX_CONNECTIONS_PER_HOUR: 定义每小时可以建立的连接数

MAX_USER_CONNECTIONS: 定义单个用户同时可以建立的连接数

eg:该语句是给用户test_user权限在test库中所有表select、insert、update权限。

mysql> grant select,insert,update on test.* to test_user@'localhost';
Query OK, 0 rows affected (0.00 sec)

eg: 该语句是给用户所有库中的所有表,授予全部权限,几乎给ROOT权限一样了。

grant all on *.* to 用户名@localhost; 

注:* 号代表所有。 

eg:给用户指定库中指定的字段执行select权限

grant select(字段名) on 库名.表名 to 用户名@主机名;

2、查看权限

#1、查看当前用户(自己)权限
show grants; #ROOT查看指定用户权限
show grants for dba@localhost;#ROOT查看用户的全部权限
grant all on *.* to dba@localhost;

 eg:查看刚才给test_user用户授予的权限

​
mysql> show grants for test_user@'localhost';
+---------------------------------------------------------------------+
| Grants for test_user@localhost                                      |
+---------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'test_user'@'localhost'                       |
| GRANT SELECT, INSERT, UPDATE ON `test`.* TO 'test_user'@'localhost' |
+---------------------------------------------------------------------+
2 rows in set (0.00 sec)

3、撤销权限

基本语法

revoke 权限列表 on 库名.表名 from 用户名@主机名;

eg:

先查看该用户的权限有SELECT、INSERT、UPDATE。

 执行撤销INSERT、UPDATE权限

mysql> revoke insert,update on test.* from test_user@'localhost';
Query OK, 0 rows affected (0.00 sec)

查看撤销后的权限只有SELECT。

http://www.lryc.cn/news/138514.html

相关文章:

  • 【python办公自动化】PysimpleGUI中的popup弹窗中的按钮设置居中
  • postgresql 同步流复制两个相关参数synchronous_commit 和 synchronous_standby_names
  • 运算放大器发展史
  • LVS+Keepalived 实验
  • FreeSWITCH 1.10.10 简单图形化界面1 - docker/脚本/ISO镜像安装
  • 内网渗透神器CobaltStrike之权限提升(七)
  • 使用haproxy搭建web架构
  • Java基础之IO流File类创建及删除
  • 高速道路监控:工业路由器助力高速监控远程管理与维护
  • 【校招VIP】前端基础之post和get
  • 如何合理设计API接口?
  • Jsp 解决out.print()输出多出空行
  • SMC状态机 讲解2 从模型到SMC
  • MyBatis-Plus的使用
  • 板卡设计+硬件每日学习十个知识点(44)23.8.24 (检测单元设计,接口部分设计,板卡电源输入设计,电源检测电路)
  • jmeter HTTP信息头管理器
  • 各种中间件的默认端口
  • leetcode303. 区域和检索 - 数组不可变(java)
  • PHP 安装Composer,vue前端依赖包
  • OpenCV项目开发实战--基于Python/C++实现鼠标注释图像和轨迹栏来控制图像大小
  • ❤ Vue使用Eslint检测报错问题和解决
  • 解决运行在微信小程序中报[ app.json 文件内容错误] app.json: app.json 未找到(env: Windows,mp,1.05.2204
  • python 基础 -- 安装Python模块
  • C语言实现状态机
  • 交叉编译工具链arm-linux-gnueabihf的安装-ubuntu 20.04
  • Java的类加载器
  • Stable Diffusion web UI 部署详细教程
  • 《深度学习计算机视觉 》书籍分享(包邮送书三本)
  • 【使用 k 折叠交叉验证的卷积神经网络(CNN)】基于卷积神经网络的无特征EMG模式识别研究(Matlab代码实现)
  • 微服务 Nacos配置热部署