Linux下安装mysql5.7
一、linux下安装mysql5.7
1. 添加 MySQL 官方 Yum 仓库
wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpmsudo rpm -ivh mysql57-community-release-el7-11.noarch.rpm
2. 安装 MySQL 5.7
sudo yum install mysql-community-server
安装过程中会安装依赖包,如果安装依赖包报错(如果不报错忽略下面内容):
从 file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql 检索密钥 导入 GPG key 0x5072E1F5: 用户ID : \"MySQL Release Engineering mysql-build@oss.oracle.com\" 指纹 : a4a9 4068 76fc bd3c 4567 70c8 8c71 8d3b 5072 e1f5 软件包 : mysql57-community-release-el7-11.noarch (installed) 来自 : /etc/pki/rpm-gpg/RPM-GPG-KEY-mysql 是否继续?[y/N]:y
mysql-community-libs-compat-5.7.44-1.el7.x86_64.rpm 的公钥尚未安装
失败的软件包是:mysql-community-libs-compat-5.7.44-1.el7.x86_64 GPG 密钥配置为:file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
解决方案:手动导入并信任 MySQL GPG 密钥
步骤 1:下载并导入最新的 MySQL GPG 密钥
执行以下命令,手动获取并导入官方密钥(解决密钥不匹配问题):
# 下载MySQL官方GPG密钥(适用于EL7系统)sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022# 验证密钥是否导入成功rpm -qa gpg-pubkey* | grep mysql
执行后若输出类似 gpg-pubkey-3a79bd29-5f68b775
的信息,说明密钥导入成功。
步骤 2:清除 yum 缓存并重新安装
# 清除yum缓存(避免残留旧的包信息)sudo yum clean allsudo rm -rf /var/cache/yum/x86_64/7/mysql57-community # 删除MySQL源缓存# 重新安装MySQL(此时会使用新导入的密钥验证)sudo yum install mysql-community-server
步骤 3:若仍失败,临时禁用 GPG 验证(不推荐,仅应急)
如果步骤 1 仍无法解决,可临时关闭 GPG 验证强制安装(存在安全风险,仅临时使用):
sudo yum install mysql-community-server --nogpgcheck
3. 启动 MySQL 服务
# 启动服务并设置开机自启sudo systemctl start mysqldsudo systemctl enable mysqld# 检查服务状态sudo systemctl status mysqld
4. 获取初始密码
sudo grep \'temporary password\' /var/log/mysqld.log
(黑色字体处为密码:A temporary password is generated for root@localhost: H_-taw.cU2Jw )
5. 安全配置
sudo mysql_secure_installation
按提示设置新密码(需满足复杂度要求),并选择是否删除匿名用户、禁止远程 root 登录等。
二、初次登录 MySQL
使用临时密码登录:
mysql -u root -p
输入临时密码(输入时屏幕不会显示,输完直接回车)。
三、修改 root 密码
方法 1:使用ALTER USER
(推荐)
登录后执行以下 SQL(需满足密码复杂度要求,默认要求至少 8 位,包含大小写字母、数字和特殊符号):
ALTER USER \'root\'@\'localhost\' IDENTIFIED BY \'YourNewPassword123!\';FLUSH PRIVILEGES; -- 刷新权限
方法 2:使用SET PASSWORD
SET PASSWORD FOR \'root\'@\'localhost\' = PASSWORD(\'YourNewPassword123!\');FLUSH PRIVILEGES;
四、降低密码复杂度(如遇困难)
若新密码因复杂度不足报错,可临时调整策略:
-- 查看当前密码策略SHOW VARIABLES LIKE \'validate_password%\';-- 降低复杂度要求SET GLOBAL validate_password.policy = LOW;SET GLOBAL validate_password.length = 4;-- 再次修改密码(如:简单密码)ALTER USER \'root\'@\'localhost\' IDENTIFIED BY \'abc123\';
五、允许远程访问(可选)
若需从外部连接 MySQL,需授权并修改配置:
-- 授权root用户从任何IP访问(%表示任意IP)GRANT ALL PRIVILEGES ON *.* TO \'root\'@\'%\' IDENTIFIED BY \'YourNewPassword123!\';FLUSH PRIVILEGES;
修改配置文件 /etc/my.cnf
(CentOS)或 /etc/mysql/mysql.conf.d/mysqld.cnf
(Ubuntu):
bind-address = 0.0.0.0 # 允许所有IP访问
重启 MySQL 服务:
sudo systemctl restart mysqld # CentOSsudo systemctl restart mysql # Ubuntu
六、验证修改成功
退出当前会话,用新密码重新登录:
mysql -u root -p
输入新密码,成功登录后即完成操作。
常见问题及解决
-
忘记临时密码:
# 停止MySQLsudo systemctl stop mysqld # 或mysql# 跳过权限验证启动sudo mysqld_safe --skip-grant-tables &# 无密码登录并修改密码mysql -u rootUPDATE mysql.user SET authentication_string=PASSWORD(\'YourNewPassword\') WHERE User=\'root\';FLUSH PRIVILEGES;exit;# 重启MySQLsudo systemctl restart mysqld
-
ERROR 1820 (HY000):
-- 先设置密码过期SET PASSWORD = PASSWORD(\'YourNewPassword123!\');ALTER USER \'root\'@\'localhost\' PASSWORD EXPIRE NEVER;FLUSH PRIVILEGES;
通过以上步骤,可顺利完成 MySQL 5.7 的初次登录和密码修改。