Linux命令:MySQL系列之十--MySQL用户和权限管理,mysql管理员密码重置

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:

MySQL用户账号包括:用户名@主机名

    用户名:16个字符以内

    主机:主机有以下几种表现方式

      主机名: mysql 

      IP地址: 172.16.90.111

      网络地址:172.16.0.0/255.255.0.0

      通配符:%,_   %:任意字符  _:任意一个

         172.16.%.%     %.magedu.com 

权限级别:全局级别、库级别、表级别、列级别、存储过程和存储函数级别

   全局级别:SELECT * FROM db\G; 查询全局库级别的权限

**************************************************************************

CREATE USER username@host [IDENTIFIED BY 'password'] 创建用户

DROP USER 'username'@'host'; 刪除用戶

RENAME USER old_name TO new_name; 重命名用戶

SHOW GRANTS FOR 'username'@'host'; 查看用户权限列表

FLUSH PRIVILEGES ; 刷新权限列表

GRANT PRIVILEGES ON [object_type] db.* TO 'username'@'host'; 给用户增加权限

REVOKE SELECT ON db.* FROM 'username'@'host'; 取消用户的SELECT权限

**************************************************************************


**************************************************************************

MySQL数据库ROOT用户密码忘记解决方案步骤:


  第一:先关闭mysqld进程,并修改配置文件/etc/my.cnf

[root@lamp ~]# service mysqld stop  #先停止mysqld进程

Shutting down MySQL..                             [  OK  ]  

[root@lamp ~]# vim /etc/init.d/mysqld #修改mysqld的启动脚本,修改内容如下红色框内,保存退出

wKiom1kUJM-jOUwGAANHAFSjXb8805.jpg

[root@lamp ~]# service mysqld start  #启动mysqld进程

Starting MySQL..                                [  OK  ] 

[root@lamp ~]# mysql  #此时登录mysql即可不需要用户名和密码

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 1

Server version: 5.5.28-log Source distribution

Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. 

mysql> USE mysql

Database changed

mysql> SELECT User,Host,Password FROM user; #查询user表的三个字段,是需要密码登录的

+------+-----------+-------------------------------------------+

| User | Host      | Password                                  |

+------+-----------+-------------------------------------------+

| root | localhost | *A198E6EEE923DA319BBF86C99624479A198E6EEE9 |

| root | lamp      | *A198E6EEE9823DA319BBF86C99624479A198E6EEE9 |

| root | 127.0.0.1 | *A198E6EEE9DA319BBF86C99624479A198E6EEE9 |

| root | ::1       | *A198E6EEE93DA319BBF86C99624479A198E6EEE9 |

| test | localhost | *94BDCEBE19083CE2A1F959FD02F964C7AF4CFC29 |

+------+-----------+-------------------------------------------+

5 rows in set (0.00 sec)

mysql> UPDATE user SET Password=PASSWORD('redhat') WHERE User='root'; #此时由于跳过

了grant权限列表,所以只能通过修改user表的Password字段的值来修改用户密码。

Query OK, 0 rows affected (0.00 sec)

Rows matched: 4  Changed: 0  Warnings: 0

mysql> SELECT User,Host,Password FROM user; #查询user表的三个字段,是需要密码登录的

+------+-----------+-------------------------------------------+

| User | Host      | Password                                  |

+------+-----------+-------------------------------------------+

| root | localhost | *84BB5DF4823DA319BBF86C99624479A198E6EEE9 |

| root | lamp      | *84BB5DF4823DA319BBF86C99624479A198E6EEE9 |

| root | 127.0.0.1 | *84BB5DF4823DA319BBF86C99624479A198E6EEE9 |

| root | ::1       | *84BB5DF4823DA319BBF86C99624479A198E6EEE9 |

| test | localhost | *94BDCEBE19083CE2A1F959FD02F964C7AF4CFC29 |

+------+-----------+-------------------------------------------+

5 rows in set (0.00 sec)

mysql>\q

[root@lamp ~]# service mysqld stop  #停止mysqld进程

Shutting down MySQL.                              [  OK  ]

[root@lamp ~]# vim /etc/init.d/mysqld #修改启动脚本,把之前修改的内容去掉后保存退出

wKioL1kUKY-QqZ8FAALYVxWuINc369.jpg

[root@lamp ~]# service mysqld start #启动mysqld进程

Starting MySQL..                                 [  OK  ]

[root@lamp ~]# mysql #此时直接登录mysql提示输入用户及密码

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

[root@lamp ~]# mysql -uroot -p  #指定通过root账号登录 -p指定需要输入密码登录

Enter password:      输入正确的密码后登录mysql 

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 2

Server version: 5.5.28-log Source distribution


Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.


Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.


Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.


mysql>            #至此mysql数据库密码遗忘的问题便解决了。 


**************************************************************************



下表为权限对应的作用范围:

wKiom1kS3DHCLDCDAAeTo2v2gH0227.jpg


创建用户 CREATE USER:CREATE USER username@host [IDENTIFIED BY 'password']创建用户,并通过IDENTIFIED BY 'password',设定密码。

Usage:

mysql> CREATE USER test@localhost IDENTIFIED BY 'test'; #创建一个用户test本地数据库账号,

密码为test。

Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES ; #刷新权限列表

Query OK, 0 rows affected (0.00 sec)

mysql> SHOW GRANTS FOR test@localhost\G; #查看数据库账户test@localhost的权限列表

*************************** 1. row ***************************

Grants for test@localhost: GRANT USAGE ON *.* TO 'test'@'localhost' IDENTIFIED BY PASSWORD '*94BDCEBE19083CE2A1F959FD02F964C7AF4CFC29'

1 row in set (0.00 sec)

重新打开另一个客户端,登录以test账号登录mysql

[root@lamp ~]# mysql -utest -p  #登录mysql数据库以test用户,输入用户密码

Enter password: 

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 17

Server version: 5.5.28-log Source distribution

Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> SHOW DATABASES;  #登录成功,查看该账号下的数据库

+--------------------+

| Database           |

+--------------------+

| information_schema |

| test               |

+--------------------+

2 rows in set (0.00 sec)


权限设定GRANT:GRANT PRIVILEGES ON [object_type] db.* TO 'username'@'host'; #指定权限PRIVILEGES  ON指定对象名称db.*  object_type指定对象类型 TO username@host 指定用户。

object_type对象类型有:TABLE(表) FUNCTION(函数) PROCEDURE(程序、库)

Usage:GRANT EXECUTE ON FUNCTION db.abc TO 'username'@'host'; #授权给username@host用户,对

db数据库的abc函数有执行权限。

 GRANT UPDATE(Age) ON db.testtb TO 'username'@'host'; #授权给username@host用户对db数据库的,testtb表的Age字段具有UPDATE权限。


取消权限设定REVOKE: REVOKE PRIVILEGES ON db.* FROM 'username'@'host'; #指定需取消什么

什么权限PRIVILEGES ON指定对象名称db.*  FROM 'username'@'host'; 指定取消哪个用户的权限。

Usage: REVOKE SELECT ON db.* FROM 'testuser'@'%'; #取消testuser用户对db数据库的所有表

的SELECT权限。












本文转自wang650108151CTO博客,原文链接:http://blog.51cto.com/woyaoxuelinux/1924645 ,如需转载请自行联系原作者




相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
16天前
|
存储 关系型数据库 MySQL
初步了解MySQL数据库的基本命令
初步了解MySQL数据库的基本命令
23 0
|
18天前
|
数据可视化 关系型数据库 MySQL
Mysql8 如何在 Window11系统下完成跳过密钥校验、完成数据库密码的修改?
这篇文章介绍了如何在Windows 11系统下跳过MySQL 8的密钥校验,并通过命令行修改root用户的密码。
Mysql8 如何在 Window11系统下完成跳过密钥校验、完成数据库密码的修改?
|
1月前
|
存储 关系型数据库 MySQL
基于python django 医院管理系统,多用户功能,包括管理员、用户、医生,数据库MySQL
本文介绍了一个基于Python Django框架开发的医院管理系统,该系统设计了管理员、用户和医生三个角色,具备多用户功能,并使用MySQL数据库进行数据存储和管理。
基于python django 医院管理系统,多用户功能,包括管理员、用户、医生,数据库MySQL
|
16天前
|
安全 关系型数据库 MySQL
在Linux中,如何重置 mysql root 密码?
在Linux中,如何重置 mysql root 密码?
|
2月前
|
存储 关系型数据库 MySQL
(十五)MySQL命令大全:以后再也不用担心忘记SQL该怎么写啦~
相信大家在编写SQL时一定有一个困扰,就是明明记得数据库中有个命令/函数,可以实现自己需要的功能,但偏偏不记得哪个命令该怎么写了,这时只能靠盲目的去百度,以此来寻找自己需要的命令。
102 28
|
22天前
|
SQL 关系型数据库 MySQL
mysql密码的初始化,修改与重置
【8月更文挑战第16天】在 MySQL 中,可通过特定步骤初始化、修改或重置密码: 1. **初始化密码**:适合首次安装或遗忘 root 密码。需先停用 MySQL 服务,以特殊模式启动(跳过权限表),登录后更新 root 用户密码,并重启服务。 2. **修改密码**:直接使用 `ALTER USER` SQL 语句或通过客户端工具如 MySQL Workbench 修改现有用户的密码。 3. **重置密码**:若遗忘密码且初始化方法不可行,则需停用服务、修改配置文件以允许无密码启动 MySQL,登录后更改密码,并恢复正常配置重启服务。
136 2
|
19天前
|
关系型数据库 MySQL 数据安全/隐私保护
【MySQL】手把手教你MySQL各版本忘记密码如何处理
【MySQL】手把手教你MySQL各版本忘记密码如何处理
|
24天前
|
安全 关系型数据库 MySQL
如何在 MySQL 中导入和导出数据库以及重置 root 密码
如何在 MySQL 中导入和导出数据库以及重置 root 密码
26 0
|
27天前
|
SQL 关系型数据库 MySQL
Mysql80 密码忘记了怎么办
Mysql80 密码忘记了怎么办
40 0
|
30天前
|
安全 关系型数据库 MySQL
"深度解析:MySQL密码修改与远程登录配置全攻略,保障数据库安全与灵活访问"
【8月更文挑战第9天】MySQL是广受青睐的开源关系型数据库系统,其安全性和易用性对DBA和开发者至关重要。本文通过实例解析MySQL中用户密码更新及远程登录配置,确保数据库安全访问与高效管理。首先介绍如何分步修改密码,包括登录MySQL、选择数据库、使用`ALTER USER`命令更新密码,并刷新权限。接着,指导如何配置远程访问,涉及调整MySQL监听地址、授权用户远程登录、检查网络设置及测试远程连接。遵循这些步骤,可强化数据库安全性并实现灵活管理。
98 0