CentOS MySQL 密码管理
查看和修改 MySQL 密码的步骤与方法
在 CentOS 操作系统中,MySQL 是一个常用的关系型数据库管理系统,为了确保数据库的安全性,定期更改和管理 MySQL 的密码是非常重要的,本文将详细介绍如何在 CentOS 系统中查看和修改 MySQL 密码,并提供相关配置和常见问题的解决方案。
一、查看 MySQL 默认密码
当首次安装 MySQL 时,系统会生成一个临时密码并记录在日志文件中,要查看这个临时密码,可以使用以下命令:
grep 'temporary password' /var/log/mysqld.log
输出可能是:
[Note] A temporary password is generated for root@localhost: r37P6n8zXs
其中r37P6n8zXs
就是临时密码。
二、修改 MySQL 密码
1、使用 ALTER USER 命令
登录 MySQL 后,可以使用ALTER USER
命令来修改密码,使用临时密码登录:
mysql u root p
然后输入临时密码进入 MySQL 控制台,使用以下命令修改密码:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword!234';
新密码必须包含大小写字母、数字和特殊字符,并且长度至少为8个字符。
2、使用 SET PASSWORD 命令
另一种修改密码的方法是使用SET PASSWORD
命令:
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('NewPassword!234');
3、跳过权限表启动 MySQL(安全模式)
如果忘记了 root 密码,可以通过跳过权限表的方式重置密码:
1. 停止 MySQL 服务:
systemctl stop mysqld
2. 使用skipgranttables
选项启动 MySQL:
mysqld_safe skipgranttables &
3. 登录 MySQL(无需密码):
mysql u root
4. 修改mysql
数据库中的user
表:
USE mysql; UPDATE user SET authentication_string=PASSWORD('NewPassword!234') WHERE User='root'; FLUSH PRIVILEGES;
5. 退出 MySQL 并重新启动服务:
exit; systemctl start mysqld
三、开启远程访问
为了允许远程连接到 MySQL,需要执行以下步骤:
1、授权远程访问:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'NewPassword!234' WITH GRANT OPTION;
2、刷新权限:
FLUSH PRIVILEGES;
3、开放防火墙端口:
firewallcmd zone=public addport=3306/tcp permanent firewallcmd reload
四、修改字符集
默认情况下,MySQL 的字符集可能不是 utf8mb4,这会影响多语言支持,可以通过以下步骤修改字符集:
1、编辑配置文件:
打开/etc/my.cnf
文件:
vim /etc/my.cnf
2、添加或修改以下内容:
[client] defaultcharacterset=utf8mb4 charactersetserver=utf8mb4 collationserver=utf8mb4_general_ci
3、重启 MySQL 服务:
systemctl restart mysqld
五、常见问题及解决方案
Q1:如何更改 MySQL 密码策略?
A1:可以通过设置全局变量来更改密码策略,关闭密码复杂性策略:
SET GLOBAL validate_password.policy=0; SET GLOBAL validate_password.length=4;
>Q2:忘记 MySQL root 密码怎么办?
A2:可以通过跳过权限表的方式重置密码,具体步骤如下:
1、停止 MySQL 服务:systemctl stop mysqld
2、使用skipgranttables
选项启动 MySQL:mysqld_safe skipgranttables &
3、登录 MySQL:mysql u root
4、修改mysql
数据库中的user
表:UPDATE user SET authentication_string=PASSWORD('NewPassword!234') WHERE User='root'; FLUSH PRIVILEGES;
5、退出并重启 MySQL:exit; systemctl start mysqld