Linux 安装 MySQL
Ubuntu/Debian 系统安装
更新软件包索引
sudo apt update
安装 MySQL Server
sudo apt install mysql-server
启动 MySQL 服务
sudo systemctl start mysql
sudo systemctl enable mysql
检查服务状态
sudo systemctl status mysql
CentOS/RHEL 系统安装
添加 MySQL 仓库
# 下载仓库配置文件
sudo wget https://dev.mysql.com/get/mysql80-community-release-el8-1.noarch.rpm
# 安装仓库
sudo rpm -ivh mysql80-community-release-el8-1.noarch.rpm
安装 MySQL Server
sudo yum install mysql-server
启动 MySQL 服务
sudo systemctl start mysqld
sudo systemctl enable mysqld
获取临时密码
CentOS/RHEL 安装后会生成临时 root 密码:
sudo grep 'temporary password' /var/log/mysqld.log
安全配置
运行安全脚本
sudo mysql_secure_installation
脚本会依次询问:
- 是否启用密码验证插件:根据需求选择,建议选择
y - 设置 root 密码强度等级:0=LOW, 1=MEDIUM, 2=STRONG
- 设置 root 密码:输入新密码
- 删除匿名用户:建议选择
y - 禁止 root 远程登录:建议选择
y(本地开发可选n) - 删除测试数据库:建议选择
y - 重新加载权限表:选择
y
设置 root 密码
Ubuntu/Debian 系统
默认使用 auth_socket 插件,需要修改认证方式。
登录 MySQL:
sudo mysql
修改 root 用户认证方式并设置密码:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';
FLUSH PRIVILEGES;
EXIT;
CentOS/RHEL 系统
使用临时密码登录:
mysql -u root -p
修改密码:
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';
EXIT;
创建新用户
登录 MySQL:
mysql -u root -p
创建用户并授权:
-- 创建用户
CREATE USER 'username'@'localhost' IDENTIFIED BY '密码';
-- 授予所有权限
GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost' WITH GRANT OPTION;
-- 授予特定数据库权限
GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'localhost';
-- 刷新权限
FLUSH PRIVILEGES;
允许远程连接
修改绑定地址
编辑配置文件:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
找到 bind-address 行,修改为:
bind-address = 0.0.0.0
创建远程用户
CREATE USER 'username'@'%' IDENTIFIED BY '密码';
GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
% 表示允许任何 IP 连接,也可以指定具体 IP。
重启服务
sudo systemctl restart mysql
配置防火墙
# Ubuntu/Debian
sudo ufw allow 3306/tcp
# CentOS/RHEL
sudo firewall-cmd --permanent --add-port=3306/tcp
sudo firewall-cmd --reload
基本操作
登录 MySQL
mysql -u root -p
查看数据库
SHOW DATABASES;
创建数据库
CREATE DATABASE database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
使用数据库
USE database_name;
查看表
SHOW TABLES;
常见问题
忘记 root 密码
停止 MySQL 服务:
sudo systemctl stop mysql
跳过权限验证启动:
sudo mysqld_safe --skip-grant-tables &
登录并修改密码:
mysql -u root
# MySQL 5.7
UPDATE mysql.user SET authentication_string=PASSWORD('新密码') WHERE User='root';
# MySQL 8.0
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
FLUSH PRIVILEGES;
EXIT;
重启服务:
sudo systemctl restart mysql
连接被拒绝
检查服务是否运行:
sudo systemctl status mysql
检查端口是否监听:
sudo netstat -tlnp | grep 3306
检查防火墙规则是否允许 3306 端口。
密码强度不符合要求
查看密码策略:
SHOW VARIABLES LIKE 'validate_password%';
临时降低密码强度要求:
SET GLOBAL validate_password.policy=LOW;
SET GLOBAL validate_password.length=6;
评论区