2025最新:Ubuntu 一键安装配置 MySQL,并开启远程 root 登录(支持自定义参数)

发布于:2025-06-22 ⋅ 阅读:(23) ⋅ 点赞:(0)

在日常开发或部署过程中,很多小伙伴需要在 Ubuntu 服务器上部署 MySQL 数据库,并支持远程访问 root 用户。手动配置过程繁琐、容易出错。本文为你准备了一套 可自定义配置的自动化脚本,一键完成安装 + 配置 + 开放远程访问。


🧩 可自定义配置参数说明

配置项 说明 默认值
MYSQL_ROOT_PASSWORD MySQL root 用户密码 pgsql@Lzy2025++
MYSQL_PORT MySQL 监听端口 3306
MYSQL_BIND_ADDRESS MySQL 绑定地址,0.0.0.0 表示允许远程 0.0.0.0

📜 脚本内容(支持配置参数)

保存以下内容为 install_mysql.sh,即可一键部署:

#!/bin/bash

# ============================
# ✅ 可配置参数(可通过环境变量传入)
# ============================
MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD:-'mysql123'}  # 设置 root 密码,支持自定义
MYSQL_PORT=${MYSQL_PORT:-3306}                                # MySQL监听端口,默认3306
MYSQL_BIND_ADDRESS=${MYSQL_BIND_ADDRESS:-'0.0.0.0'}           # 设置允许连接的 IP,默认所有地址

echo "[1/6] 更新APT源并安装MySQL Server..."
apt update
DEBIAN_FRONTEND=noninteractive apt install -y mysql-server    # 静默安装MySQL,不弹交互框

echo "[2/6] 启动MySQL服务..."
systemctl enable mysql     # 设置为开机启动
systemctl start mysql      # 启动服务

echo "[3/6] 设置MySQL root密码并允许远程连接..."
mysql -u root <<EOF
-- 修改 root 用户的认证插件为 mysql_native_password(兼容大部分客户端)
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '${MYSQL_ROOT_PASSWORD}';

-- 创建 root@'%' 用户,允许远程连接,设置相同密码
CREATE USER IF NOT EXISTS 'root'@'%' IDENTIFIED BY '${MYSQL_ROOT_PASSWORD}';

-- 授予 root@'%' 完整权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;

-- 刷新权限表
FLUSH PRIVILEGES;
EOF

echo "[4/6] 修改MySQL配置文件,允许远程访问..."
MYSQL_CONF="/etc/mysql/mysql.conf.d/mysqld.cnf"

# 修改或追加 bind-address 行
sed -i "s/^bind-address.*/bind-address = ${MYSQL_BIND_ADDRESS}/" "$MYSQL_CONF" || echo "bind-address = ${MYSQL_BIND_ADDRESS}" >> "$MYSQL_CONF"

# 修改或追加 port 行
sed -i "s/^port.*/port = ${MYSQL_PORT}/" "$MYSQL_CONF" || echo "port = ${MYSQL_PORT}" >> "$MYSQL_CONF"

echo "[5/6] 重启MySQL服务以应用配置..."
systemctl restart mysql

echo "[6/6] MySQL安装与配置完成 ✅"
echo "📌 你现在可以通过以下命令远程连接数据库:"
echo "  mysql -h [服务器IP] -P ${MYSQL_PORT} -u root -p"

🧪 使用方法

  1. 将脚本保存为 install_mysql.sh

  2. 给脚本赋予执行权限:

    chmod +x install_mysql.sh
    
  3. 可自定义配置执行:

    MYSQL_ROOT_PASSWORD=myPassword123 MYSQL_PORT=3307 ./install_mysql.sh
    

    或使用默认配置:

    ./install_mysql.sh
    

📌 最终效果

  • ✅ MySQL 自动安装完成
  • ✅ root 密码配置完成
  • ✅ 支持远程访问
  • ✅ 防火墙无干扰(请确保你服务器安全组或 ufw 已放行 3306 端口)

🚧 常见问题排查

问题 解决方式
连接报错 Can not read response from server 检查 MySQL 是否监听公网地址 / 防火墙是否开放
root 无法远程连接 检查是否授权 root@'%' 并使用 mysql_native_password
外部工具无法连接 检查是否勾选了 useSSL=false、端口号是否正确


网站公告

今日签到

点亮在社区的每一天
去签到