MySQL :: Download MySQL Community Server下载 MySQL 8.0.38,访问 MySQL 官方网站下载 8.0.38 版本的安装包。
最新版本下载地址:MySQL :: Download MySQL Community Server
导入文件
将下载的文件导入到服务器中。
解压文件
使用以下命令解压 RPM 包:
tar -xvf mysql-8.0.38-1.el9.x86_64.rpm-bundle.tar
安装 MySQL
使用 dnf 命令安装解压后的文件:
sudo dnf localinstall mysql-community-*
检查 MySQL 服务状态
安装成功后,检查 MySQL 服务是否启动:
sudo systemctl status mysqld
启动 MySQL 服务
如果 MySQL 服务未启动,使用以下命令启动:
sudo systemctl start mysqld
登录 MySQL
首次启动后,尝试使用 root 用户登录 MySQL:
mysql -u root -p
此时可能会报错,这是因为需要输入初始密码。
获取初始密码
查看 MySQL 服务日志获取初始密码:
sudo grep 'temporary password' /var/log/mysqld.log
初始密码通常位于 @localhost 后面的部分。
使用初始密码登录
使用获取的初始密码登录 MySQL:
修改密码
USE mysql;
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
退出并重新登录
退出 MySQL:
EXIT;
使用新密码重新登录 MySQL
如果查不到初始密码,使用另一种方式跳过密码进入。
停止 MySQL 服务
sudo systemctl stop mysqld
启动 MySQL服务,但不加载授权表
sudo mysqld safe --skip-grant-tables &
登录到 MySQL
mysql -u root
重置密码
在 MySQL 提示符下,执行以下 SQL命令来重置 root 密码:
FLUSH PRIVILEGES,
ALTER USER 'root'@'localhost'IDENTIFIED BY'新密码”;
然后退出用新密码重新登录。
多进程同时运行导致无法启动mysql服务
root@school-212 mysql-8.0.38]# ps aux | grep mysqld
root 1560930 0.0 0.0 16768 8620 ? S 16:27 0:00 sudo mysqld_safe --skip-grant-tables
root 1560952 0.0 0.0 4860 3904 ? S 16:27 0:00 /usr/bin/sh /bin/mysqld_safe --skip-grant-tables
mysql 1561336 0.4 2.7 2331276 445400 ? Sl 16:27 0:16 //sbin/mysqld --basedir=/ --datadir=/var/lib/mysql --plugin-dir=//lib64/mysql/plugin --user=mysql --skip-grant-tables --log-error=/var/log/mysql/mysqld.log --pid-file=/run/mysqld/mysqld.pid --socket=/var/lib/mysql/mysql.sock
root 2122025 0.0 0.0 3876 2148 pts/1 S+ 17:29 0:00 grep --color=auto mysqld
据您ps aux | grep mysqld
输出,我们可以看到有多个与 mysqld
相关的进程:
- 一个
sudo mysqld_safe --skip-grant-tables
进程,PID 为 1560930。 - 一个相关的 shell 进程,PID 为 1560952,它运行了
mysqld_safe
脚本。 - 一个主 MySQL 服务进程,PID 为 1561336,它使用了
--skip-grant-tables
参数启动。 - 一个
grep
进程,PID 为 2122025,用于搜索包含mysqld
的行。
-
停止所有 MySQL 相关进程:
- 首先,您需要停止所有正在运行的 MySQL 服务进程:
sudo systemctl stop mysqld
- 首先,您需要停止所有正在运行的 MySQL 服务进程:
-
检查 MySQL 服务状态:
- 确认服务是否已经停止:
sudo systemctl status mysqld
- 确认服务是否已经停止:
-
结束额外的
mysqld_safe
进程:- 如果
systemctl
停止命令没有结束所有mysqld
相关的进程,您可能需要手动结束它们。使用kill
命令加上 PID:
替换sudo kill -9 PID
PID
为相应的进程 ID(例如 1560930 和 1560952)。
- 如果
-
检查 socket 文件:
- 确认
/var/lib/mysql/mysql.sock
文件是否存在。如果有,可能需要删除它以避免端口冲突:sudo rm /var/lib/mysql/mysql.sock
- 确认
-
重新启动 MySQL 服务:
- 在结束所有相关进程并清理 socket 文件后,尝试重新启动 MySQL 服务:
sudo systemctl start mysqld
- 在结束所有相关进程并清理 socket 文件后,尝试重新启动 MySQL 服务:
-
验证 MySQL 服务状态:
- 再次检查服务状态以确认 MySQL 是否成功启动:
sudo systemctl status mysqld
- 再次检查服务状态以确认 MySQL 是否成功启动:
-
检查端口和 socket:
- 确认 MySQL 服务是否绑定到了正确的端口和 socket:
netstat -tulnp | grep mysql
- 确认 MySQL 服务是否绑定到了正确的端口和 socket: