mysql重置root密码官方文档 (5.7 version)

本文档详细介绍了如何在MySQL 5.7版本中重置root用户的密码,提供了一步一步的操作指南,确保用户能够安全地更改访问权限。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

注意:5.7版本  其他的见各个版本文档

How to Reset the Root Password
If you have never assigned a root password for MySQL, the server does not require a password at
all for connecting as root . However, this is insecure. For instructions on assigning a password, see
Section 2.10.4, “Securing the Initial MySQL Account” .
If you know the root password and want to change it, see Section 13.7.1.1, “ALTER USER
Statement” , and Section 13.7.1.7, “SET PASSWORD Statement” .
If you assigned a root password previously but have forgotten it, you can assign a new password. The
following sections provide instructions for Windows and Unix and Unix-like systems, as well as generic
instructions that apply to any system.
Resetting the Root Password: Windows Systems
Resetting the Root Password: Unix and Unix-Like Systems
On Unix, use the following procedure to reset the password for the MySQL 'root'@'localhost'
account. To change the password for a root account with a different host name part, modify the
instructions to use that host name.
The instructions assume that you start the MySQL server from the Unix login account that you normally
use for running it. For example, if you run the server using the mysql login account, you should log
in as mysql before using the instructions. Alternatively, you can log in as root , but in this case you
must start mysqld with the --user=mysql option. If you start the server as root without using --
user=mysql , the server may create root -owned files in the data directory, such as log files, and
these may cause permission-related problems for future server startups. If that happens, you must
either change the ownership of the files to mysql or remove them.
1. Log on to your system as the Unix user that the MySQL server runs as (for example, mysql ).
2. Stop the MySQL server if it is running. Locate the .pid file that contains the server's process ID.
The exact location and name of this file depend on your distribution, host name, and configuration.
Common locations are /var/lib/mysql/ , /var/run/mysqld/ , and /usr/local/mysql/
data/ . Generally, the file name has an extension of .pid and begins with either mysqld or your
system's host name.
Stop the MySQL server by sending a normal kill (not kill -9 ) to the mysqld process. Use the
actual path name of the .pid file in the following command:
shell> kill `cat /mysql-data-directory/host_name.pid`
(注:这步的作用是杀掉mysql,执行完该命令后一定要确定mysql被杀掉了;停止mysqld是重置密码的前提;如果杀不掉那么请思考另外的办法,确保在mysql未运行的情况执行后续命令,例如开机后不自动启动mysql)
( 注: host_name.pid 是记录mysql运行进程号的文件,也可以不通过该文件,而是通过ps获取mysql正在运行的进程号
Use backticks (not forward quotation marks) with the cat command. These cause the output of
cat to be substituted into the kill command.
3. Create a text file containing the password-assignment statement on a single line. Replace the
password with the password that you want to use.
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';
(注:这条语句是修改密码的语句,需要协助text文本中,如果这条语句在后序操作中执行不成功,或执行后密码没有被重置,则尝试执行另外一条语句(后面会提到))
4. Save the file. This example assumes that you name the file /home/me/mysql-init . The file
contains the password, so do not save it where it can be read by other users. If you are not logged
in as mysql (the user the server runs as), make sure that the file has permissions that permit
mysql to read it.
(注:意思是确保上面的文件的可读性)
5. Start the MySQL server with the init_file system variable set to name the file:
shell> mysqld --init-file=/home/me/mysql-init &
(注:执行该语句的时候会提示你,是start?stop?restart?。。。
    这时候需要补全语句,例如:补全后的效果
    /etc/rc.d/init.d/mysqld start --init-file=/home/me/mysql-init  
     & 根据需要选择保留与否;补充的一般是start 因为我们要启动mysql
The server executes the contents of the file named by the init_file system variable at startup,
changing the 'root'@'localhost' account password.
Other options may be necessary as well, depending on how you normally start your server. For
example, --defaults-file may be needed before the init_file argument.
(注:这步是有可能执行不成功的,可能是文本里面的sql语句有语病(我复制的时候就少了个字母),也有可能是其他原因。如果执行成功了会提示: successfully;否则要么报错,要么没反应,这说明没有执行成功。这步成功了密码也就重置成功了,否则不成功
6. After the server has started successfully, delete /home/me/mysql-init .
You should now be able to connect to the MySQL server as root using the new password. Stop the
server and restart it normally.
If the ALTER USER statement fails to reset the password, try repeating the procedure using the
following statements to modify the user table directly:
(注:如果上面的步骤操作之后,密码不对。那么用以下sql替换前面的sql语句,重新安照前面的程序来走一边(我在实际的操作过程中,就遇到了这样的情况,并且这样做,然后成功重置了密码))
(这就是前面提到过的:尝试执行另外一条语句)
UPDATE mysql.user
SET authentication_string = PASSWORD('MyNewPass'), password_expired = 'N'
WHERE User = 'root' AND Host = 'localhost';
FLUSH PRIVILEGES;
    
### MySQL 5.7 安装版 忘记 Root 密码重置方法 如果忘记了 MySQL 5.7 安装版的 `root` 用户密码,可以通过以下方式重新设置密码: #### 停止 MySQL 服务 首先需要停止正在运行的 MySQL 服务。可以使用以下命令来完成此操作: ```bash sudo systemctl stop mysql ``` 或者,在某些操作系统上可能需要使用: ```bash sudo service mysql stop ``` #### 修改配置文件以跳过权限验证 为了能够无密码访问数据库并修改根用户的密码,需临时让 MySQL 跳过权限表加载。这可以通过向 MySQL 配置文件中添加参数实现。 编辑 `/etc/my.cnf` 或者其他对应的配置文件(具体路径取决于安装位置),在 `[mysqld]` 下新增如下内容[^4]: ``` [mysqld] skip-grant-tables ``` 保存更改后重启 MySQL 服务: ```bash sudo systemctl start mysql ``` 此时启动的服务会忽略授权表中的认证信息,允许管理员无需密码即可进入数据库环境。 #### 登录到 MySQL 并更新密码 通过命令行工具连接至未受保护状态下的实例: ```sql mysql -u root ``` 成功登录之后执行 SQL 更新语句改变 root密码。注意这里假设采用的是插件 authentication_plugin='mysql_native_password' 来存储凭证数据;如果不是默认情况,则应调整相应部分匹配实际部署状况[^2]: ```sql USE mysql; FLUSH PRIVILEGES; ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码'; ``` 其中,“新密码”替换为你希望设定的新密钥字符串。 #### 移除 skip-grant-tables 设置恢复正常模式 最后一步非常重要——移除之前加入到 my.cnf 中关于 `skip-grant-tables` 的定义,并再次重启服务使一切恢复正常运作秩序: ```bash # 编辑 /etc/my.cnf 删除刚才增加的内容 vi /etc/my.cnf # 然后再次开启服务 sudo systemctl restart mysql ``` 现在应该可以用刚刚创建好的全新密码去尝试登陆了! ```python import pymysql.cursors connection = pymysql.connect(host='localhost', user='root', password='新密码', # 替换为上面设置的实际值 cursorclass=pymysql.cursors.DictCursor) try: with connection.cursor() as cursor: sql_query = "SELECT VERSION();" cursor.execute(sql_query) finally: connection.close() ``` 以上即完成了整个流程的操作指南说明文档。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值