下面给你一份**在 Debian 系统上配置 MySQL(以 MySQL 8.x 为例)**的完整常见配置流程,从安装到常用配置项,适合服务器环境。
sudo apt update
sudo apt upgrade -y
sudo apt install mysql-server -y
安装完成后,MySQL 会自动启动。
检查状态:
sudo systemctl status mysql
运行官方安全脚本:
sudo mysql_secure_installation
常见选项说明:
auth_socket,后面会讲)Debian 默认 root 用户只能通过系统 root 登录:
sudo mysql
而不是:
mysql -u root -p
如果你希望用密码登录:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';
FLUSH PRIVILEGES;
然后:
mysql -u root -p
主配置文件:
/etc/mysql/mysql.conf.d/mysqld.cnf
编辑:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
默认只允许本地:
bind-address = 127.0.0.1
允许所有 IP(⚠️ 需配合用户权限):
bind-address = 0.0.0.0
改完后重启:
sudo systemctl restart mysql
[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
客户端:
[client]
default-character-set = utf8mb4
max_connections = 200
查看当前连接数:
SHOW STATUS LIKE 'Threads_connected';
innodb_buffer_pool_size = 1G
建议设为 系统内存的 50%~70%。
不要直接用 root 跑业务。
CREATE DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'myuser'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'%';
FLUSH PRIVILEGES;
% 表示允许远程,若只本地:
CREATE USER 'myuser'@'localhost';
sudo ufw allow 3306/tcp
⚠️ 生产环境不建议直接暴露 3306,建议:
# 启动 / 停止 / 重启
sudo systemctl start mysql
sudo systemctl stop mysql
sudo systemctl restart mysql
# 开机自启
sudo systemctl enable mysql
# 查看日志
sudo tail -f /var/log/mysql/error.log
mysql --version
这是 auth_socket 问题,参考第三节。
bind-address如果你愿意,可以告诉我:
我可以给你更精确的配置方案。