步骤1:添加 MySQL 官方 APT 仓库
直接在终端执行以下命令,系统会自动配置仓库并选择版本:
# 下载 MySQL APT 仓库配置工具 wget https://dev.mysql.com/get/mysql-apt-config_0.8.24-1_all.deb # 安装配置工具(会弹出图形界面选择版本) sudo dpkg -i mysql-apt-config_0.8.24-1_all.deb
-
在弹出的配置界面中:
-
选择 MySQL Server & Cluster -> mysql-8.0。
-
选择 OK 确认。
-
步骤2:更新仓库并安装 MySQL 8.0.41
# 更新软件源 sudo apt update 若缺少秘钥 sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys B7B3B788A8D3785C # 更新软件源 sudo apt update
#安装
sudo apt install mysql-server
步骤3:启动服务并初始化
# 启动 MySQL sudo systemctl start mysql # 设置开机自启 sudo systemctl enable mysql # 运行安全配置向导 sudo mysql_secure_installation
2. 查找临时密码
MySQL 8.0 在首次安装时会生成一个临时密码,通常记录在日志文件中。执行以下命令查找:
sudo grep 'temporary password' /var/log/mysql/error.log
3. 使用临时密码登录 MySQL
使用临时密码登录 MySQL:
mysql -u root -p
4. 修改 root 密码
在 MySQL 命令行中执行以下命令修改密码:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的新密码'; FLUSH PRIVILEGES;
5. 重新运行安全配置向导
修改密码后,重新运行安全配置向导:
sudo mysql_secure_installation
sudo mysql
6. 如果未找到临时密码
如果未找到临时密码,可能是 MySQL 使用了 auth_socket
插件,允许系统用户无需密码直接登录。可以通过以下方式解决:
使用 sudo
直接登录
-
按提示操作:
-
设置 root 密码。
-
移除匿名用户(输入
Y
)。 -
禁止远程 root 登录(输入
Y
)。 -
删除测试数据库(输入
Y
)。 -
重新加载权限表(输入
Y
)。
-
-
操作完成后如果发现没有设置密码
-
1. 检查 MySQL 是否已启动
确保 MySQL 服务已正常运行:
sudo systemctl status mysql
-
如果状态为
active (running)
,说明服务已启动。 -
如果未启动,尝试手动启动:
sudo systemctl start mysql
-
输出示例:
2023-10-01T12:34:56.789012Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: abcdef123456
-
记下临时密码(如
abcdef123456
)。 -
输入临时密码后进入 MySQL 命令行。
-
将
你的新密码
替换为强密码(如MyNewPassword123!
)。 -
输入新密码。
-
按提示完成安全配置(如删除匿名用户、禁止远程 root 登录等)。
-
进入 MySQL 命令行后,执行以下命令修改密码:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的新密码'; FLUSH PRIVILEGES;
sudo mysql
-
进入 MySQL 命令行后,执行以下命令修改密码:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的新密码'; FLUSH PRIVILEGES;
-
退出 MySQL 命令行后,使用新密码登录:
mysql -u root -p
-
输入新密码,确认是否可以正常登录。
步骤4:验证安装
# 查看版本 mysql --version # 输出示例:mysql Ver 8.0.41 for Linux on x86_64 (MySQL Community Server - GPL) # 登录 MySQL mysql -u root -p # 输入密码后进入 MySQL 命令行
关键注意事项
-
版本兼容性
-
若麒麟系统基于 Ubuntu 20.04,需将安装命令中的
ubuntu22.04
替换为ubuntu20.04
。 -
若仓库中无
8.0.41
版本,可安装最新 8.0.x 版本(如8.0.42
),功能完全兼容。
-
-
依赖冲突处理
如果之前安装过 MySQL 或 MariaDB,需先彻底卸载:sudo apt purge mysql-server* mariadb-server* sudo rm -rf /etc/mysql /var/lib/mysql sudo apt autoremove
-
配置文件路径
-
主配置文件:
/etc/mysql/my.cnf
-
数据目录:
/var/lib/mysql
-
-
防火墙设置(可选)
如需远程访问,开放 3306 端口:sudo ufw allow 3306/tcp
常见问题解决
-
安装时提示依赖错误
运行以下命令修复依赖:sudo apt install -f
-
安装界面未弹出版本选择
手动编辑仓库配置文件:sudo nano /etc/apt/sources.list.d/mysql.list
确保包含以下内容:
deb http://repo.mysql.com/apt/ubuntu/ focal mysql-8.0 # 替换 focal 为系统代号(如 jammy)
-
忘记 root 密码
重置密码步骤:sudo systemctl stop mysql sudo mysqld_safe --skip-grant-tables & mysql -u root # 在 MySQL 命令行执行: ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码'; FLUSH PRIVILEGES; exit sudo systemctl start mysql
如果 MySQL 只能在本地连接,而局域网内的其他电脑无法连接,通常是因为 MySQL 的配置限制了远程访问。以下是解决方法的详细步骤:
1. 检查 MySQL 绑定地址
MySQL 默认只绑定到 127.0.0.1
(即本地回环地址),需要修改为 0.0.0.0
以允许远程连接。
步骤1:编辑 MySQL 配置文件
-
打开 MySQL 配置文件:
bash
复制
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
-
如果文件路径不同,请根据实际路径调整。
-
-
找到
bind-address
配置项,将其修改为:ini
复制
bind-address = 0.0.0.0
-
0.0.0.0
表示允许所有 IP 地址连接。
-
-
保存并退出(
Ctrl + O
保存,Ctrl + X
退出)。
步骤2:重启 MySQL 服务
bash
复制
sudo systemctl restart mysql
2. 检查防火墙设置
如果防火墙未开放 MySQL 的端口(默认 3306
),局域网内的其他电脑将无法连接。
步骤1:开放 3306 端口
-
如果使用
ufw
防火墙:bash
复制
sudo ufw allow 3306/tcp sudo ufw reload
-
如果使用
iptables
防火墙:bash
复制
sudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT sudo iptables-save | sudo tee /etc/iptables/rules.v4
步骤2:检查防火墙状态
bash
复制
sudo ufw status
-
确保
3306/tcp
已允许。
3. 检查 MySQL 用户权限
MySQL 用户默认只能从 localhost
连接,需要授权远程访问。
步骤1:登录 MySQL
bash
复制
mysql -u root -p
步骤2:授权远程访问
-
查看当前用户权限:
sql
复制
SELECT user, host FROM mysql.user;
-
如果
root
用户的host
仅为localhost
,则需要修改。
-
-
授权
root
用户从任意 IP 访问:sql
复制
CREATE USER 'root'@'%' IDENTIFIED BY '你的密码'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES;
-
将
你的密码
替换为实际密码。
-
-
如果已有
root@%
用户,只需更新权限:sql
复制
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES;
步骤3:退出 MySQL
sql
复制
exit;
4. 检查网络连接
确保局域网内的其他电脑可以访问 MySQL 服务器的 IP 地址。
步骤1:获取 MySQL 服务器的 IP 地址
在 MySQL 服务器上运行:
bash
复制
ip a
-
找到局域网 IP 地址(如
192.168.1.100
)。