Linux 服务器数据库安装与远程连接配置实操
在 Linux 服务器上装数据库,核心就三件事:把服务装起来、让它开机自启并正常运行、再决定是否允许远程连接。
下面以 MySQL 8.x 在主流 Linux 发行版上的安装为主线,命令和路径都给出可直接复制执行的版本,Ubuntu/Debian 和 CentOS/RHEL 系分别说明。
先确认环境和权限
开始前先确认两件事:你用的是哪个发行版,以及是否具备 root 或 sudo 权限。
执行下面命令查看系统信息:
cat /etc/os-release
whoami
如果 whoami 返回的不是 root,后面所有命令前都要加 sudo。
另外建议先更新软件源索引,避免安装到过旧或缺失的包:
# Ubuntu / Debian
sudo apt update
# CentOS / RHEL
sudo yum makecache
安装 MySQL 服务
Ubuntu / Debian 系直接安装:
sudo apt install mysql-server -y
sudo systemctl enable --now mysql
CentOS / RHEL 系通常需要先添加官方源,再安装:
sudo yum install mysql-server -y
sudo systemctl enable --now mysqld
安装完成后立刻验证服务状态,这是判断安装是否成功最直接的方式:
sudo systemctl status mysql # CentOS 换成 mysqld
看到 active (running) 说明服务已经跑起来了。
如果显示 failed,先看日志定位原因:
sudo journalctl -u mysql -n 50 --no-pager
常见原因是数据目录权限不对或端口被占用,日志里一般会直接写明。
完成安全初始化
MySQL 装好后默认的 root 认证方式和空密码策略并不安全,建议执行自带的安全脚本:
sudo mysql_secure_installation
按提示依次完成:设置 root 密码强度、移除匿名用户、禁止 root 远程登录、删除测试库。这一步对公网服务器尤其重要,不做等于把数据库暴露在风险里。
如果你希望 root 也能远程登录(后面会讲更推荐的做法是建独立账号),需要先改认证插件。
以 root 身份进入 MySQL:
sudo mysql
在 MySQL 提示符下执行:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的强密码';
FLUSH PRIVILEGES;
EXIT;
注意 MySQL 8 默认使用 caching_sha2_password,部分旧版客户端连接会报认证错误,改成 mysql_native_password 可以兼容更多工具。
开放远程连接的正确姿势
远程连接分两步:数据库层面授权 + 服务器防火墙放行。
先建一个专用账号,不要直接用 root 远程:
CREATE USER 'appuser'@'%' IDENTIFIED BY '强密码';
GRANT ALL PRIVILEGES ON 你的库名.* TO 'appuser'@'%';
FLUSH PRIVILEGES;
% 表示允许任意来源 IP。
如果知道固定 IP,把 % 换成具体 IP 更安全。
接着改 MySQL 监听地址。
编辑配置文件:
# Ubuntu / Debian
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
# CentOS / RHEL
sudo nano /etc/my.cnf
找到 bind-address,改成:
bind-address = 0.0.0.0
保存后重启服务:
sudo systemctl restart mysql # CentOS 换成 mysqld
最后放行防火墙端口(默认 3306):
# firewalld(CentOS 常见)
sudo firewall-cmd --permanent --add-port=3306/tcp
sudo firewall-cmd --reload
# ufw(Ubuntu 常见)
sudo ufw allow 3306/tcp
如果你用的是云服务器,还要去云厂商控制台的安全组里放行 3306,这一层经常被忽略,导致本地防火墙开了还是连不上。
验证与常见问题
在服务器本机测试:
mysql -u appuser -p -h 127.0.0.1
能进入 MySQL 提示符说明账号和密码没问题。
远程连接测试则从你本地电脑用客户端工具连接服务器公网 IP。
几个高频报错的处理方向:
Can't connect to MySQL server (10060):基本都是防火墙或安全组没放行,检查服务器防火墙和云控制台安全组两层。Access denied for user:账号、密码或授权主机不对,确认user@host里的 host 是否匹配你的来源 IP。Authentication plugin 'caching_sha2_password' cannot be loaded:客户端版本较旧,把账号认证方式改成mysql_native_password。- 服务启动失败:优先看
journalctl -u mysql日志,别盲目重装。
关于面板工具的补充
如果你用宝塔面板,可以在软件商店直接安装 MySQL,省去手动配置。
安装后在「数据库」页面添加数据库和用户,并在「安全」页面放行 3306 端口。
但要注意:面板放行端口和云安全组是两回事,两边都要开。
命令行方式的好处是配置透明、便于排查,面板方式胜在快,按自己熟悉程度选即可。
整个流程走下来,判断安装是否成功的标准很清楚:服务 active (running)、本机能登录、远程能连上、重启服务器后数据库自动启动。
这四点都通过,才算真正配好了。