完整教程:轻量服务器创建mysql,并配置远程连接

news/2025/10/20 16:15:56/文章来源:https://www.cnblogs.com/yxysuanfa/p/19152911

详细介绍在Ubuntu 22.04 ECS实例上安装MySQL并进行安全配置的完整步骤,包括设置密码、移除匿名用户和开启root远程登录。

1. 安装 MySQL

首先更新软件包列表并安装MySQL服务器:

sudo apt update
sudo apt install mysql-server -y

安装完成后,检查MySQL服务状态:

sudo systemctl status mysql

如果服务没有自动启动,使用以下命令启动并设置开机自启:

sudo systemctl start mysql
sudo systemctl enable mysql

2. 初始化安全设置

方法一:使用 mysql_secure_installation(推荐)

MySQL提供了一个安全配置脚本,可以交互式地进行安全设置:

sudo mysql_secure_installation

执行后会有一系列提示,按以下方式回答:

  1. 验证密码组件:输入 n(跳过密码验证策略)
  2. 更改root密码:输入 y,然后设置密码为 123456
  3. 移除匿名用户:输入 y
  4. 禁止root远程登录这里要特别注意,输入 n(因为我们想要开启root远程登录)
  5. 移除test数据库:输入 y
  6. 重新加载权限表:输入 y

方法二:手动配置(如果上述方法不适用)

如果上述脚本不工作,可以手动进行安全配置:

# 登录MySQL(初始安装时可能无需密码)
sudo mysql
# 在MySQL提示符下执行以下命令:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
DELETE FROM mysql.user WHERE User='';
DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');
DROP DATABASE IF EXISTS test;
DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%';
FLUSH PRIVILEGES;
EXIT;

3. 开启root远程登录

现在我们需要配置root用户的远程访问权限:

# 登录MySQL
sudo mysql -u root -p
# 输入密码:123456

在MySQL提示符下执行以下命令:

-- 创建root用户并允许从任何主机连接(生产环境建议限制IP)
CREATE USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
-- 或者如果root@%已存在,只需更新认证方式和密码
-- ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
-- 授予所有权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
-- 重新加载权限
FLUSH PRIVILEGES;
-- 查看用户权限配置
SELECT user, host, authentication_string FROM mysql.user;

退出MySQL:

EXIT;

4. 配置MySQL允许远程连接

编辑MySQL配置文件,修改绑定地址:

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

找到 bind-address 这一行,将其修改为:

bind-address = 0.0.0.0

或者注释掉这一行:

# bind-address = 127.0.0.1

按 Ctrl + O(按住Control键,再按O键)
底部会显示 File Name to Write: ...
直接按 Enter 键确认保存
保存并退出编辑器。

5. 配置防火墙

如果系统启用了UFW防火墙,需要开放MySQL端口:

sudo ufw allow 3306/tcp
sudo ufw reload

6. 重启MySQL服务

应用所有配置更改:

sudo systemctl restart mysql
sudo systemctl status mysql  # 检查服务状态

7. 测试连接

本地测试:

mysql -u root -p -h 127.0.0.1

远程测试(从另一台机器):

mysql -u root -p -h 你的ECS服务器IP地址

8. 云服务器安全组配置

重要:在云服务商的控制台中,配置安全组规则,在入方向开放3306端口:

  • 端口范围:3306/3306
  • 授权对象:0.0.0.0/0(任何IP)或您的特定IP段

安全建议

⚠️ 重要安全提醒

  1. 使用简单密码如"123456"在生产环境中极不安全,建议使用强密码
  2. 允许root用户远程登录存在安全风险,建议创建专用用户进行远程连接
  3. 考虑使用SSH隧道进行更安全的远程连接

故障排除

如果连接失败,检查以下内容:

  1. 检查MySQL服务状态

    sudo systemctl status mysql
  2. 检查监听端口

    sudo netstat -tlnp | grep 3306
  3. 检查MySQL错误日志

    sudo tail -f /var/log/mysql/error.log
  4. 验证用户权限

    sudo mysql -u root -p -e "SELECT user, host FROM mysql.user;"

配置云服务器安全组

这是最常见的问题!请登录到您的云服务商控制台:

对于华为云:

  1. 进入 弹性云服务器 ECS 控制台
  2. 找到您的实例 8.138.211.30
  3. 点击实例名称进入详情
  4. 找到 安全组 标签页
  5. 点击安全组名称进入规则配置
  6. 在 入方向规则 中添加:
    - 协议端口:3306/3306
    - 源地址:0.0.0.0/0 或您的特定IP
    - 描述:MySQL远程访问

对于阿里云:

  1. 进入 ECS控制台
  2. 找到您的实例
  3. 在 安全组 中配置入方向规则

完成以上步骤后,您应该能够成功从远程连接到MySQL数据库了。

↑↑↑




↓↓↓

详细介绍如何创建 yeyuge 数据库并确保 root 用户可以访问。

1. 创建 yeyuge 数据库

首先登录 MySQL:

mysql -u root -p123456

在 MySQL 命令行中执行:

-- 创建数据库
CREATE DATABASE yeyuge;
-- 查看所有数据库确认
SHOW DATABASES;

2. 配置 root 用户访问权限

root 用户默认已经有所有权限,但我们可以确认一下:

-- 查看root用户的权限
SHOW GRANTS FOR 'root'@'%';
-- 如果root@%用户不存在,创建它(针对远程访问)
CREATE USER IF NOT EXISTS 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
-- 确保本地root用户也有权限
GRANT ALL PRIVILEGES ON yeyuge.* TO 'root'@'localhost';
-- 刷新权限
FLUSH PRIVILEGES;

3. 专门为 yeyuge 数据库创建专用用户(推荐)

为了安全考虑,建议为 yeyuge 数据库创建专用用户:

-- 创建专用用户
CREATE USER 'yeyuge_user'@'%' IDENTIFIED WITH mysql_native_password BY 'yeyuge_password_123';
-- 授予对yeyuge数据库的所有权限
GRANT ALL PRIVILEGES ON yeyuge.* TO 'yeyuge_user'@'%';
-- 刷新权限
FLUSH PRIVILEGES;
-- 查看用户权限
SHOW GRANTS FOR 'yeyuge_user'@'%';

4. 测试数据库访问

测试 root 用户访问:

-- 在MySQL命令行中测试
USE yeyuge;
SELECT DATABASE();  -- 应该显示yeyuge
-- 创建测试表验证权限
CREATE TABLE test_table (id INT, name VARCHAR(50));
INSERT INTO test_table VALUES (1, 'test');
SELECT * FROM test_table;
DROP TABLE test_table;

从命令行测试:

# 使用root用户连接并指定yeyuge数据库
mysql -u root -p123456 -D yeyuge -e "SELECT '成功连接到yeyuge数据库' as message;"
# 或者连接后使用USE语句
mysql -u root -p123456 -e "USE yeyuge; SELECT DATABASE();"

5. 完整的配置脚本

创建一个完整的配置脚本:

#!/bin/bash
# 保存为 setup_yeyuge_db.sh
echo "=== 设置yeyuge数据库 ==="
# 使用MySQL命令行执行配置
mysql -u root -p123456 << EOF
-- 创建数据库
CREATE DATABASE IF NOT EXISTS yeyuge;
-- 确保root用户有权限
GRANT ALL PRIVILEGES ON yeyuge.* TO 'root'@'localhost';
GRANT ALL PRIVILEGES ON yeyuge.* TO 'root'@'%';
-- 创建专用用户(可选)
CREATE USER IF NOT EXISTS 'yeyuge_user'@'%' IDENTIFIED WITH mysql_native_password BY 'yeyuge_password_123';
GRANT ALL PRIVILEGES ON yeyuge.* TO 'yeyuge_user'@'%';
-- 刷新权限
FLUSH PRIVILEGES;
-- 显示结果
SHOW DATABASES LIKE 'yeyuge';
SHOW GRANTS FOR 'root'@'%';
EOF
echo "=== 配置完成 ==="

给脚本执行权限并运行:

chmod +x setup_yeyuge_db.sh
./setup_yeyuge_db.sh

6. 验证配置

验证方法1:权限检查

-- 查看数据库权限
SELECT * FROM mysql.db WHERE Db = 'yeyuge';
-- 查看用户权限
SHOW GRANTS FOR 'root'@'%';
SHOW GRANTS FOR 'root'@'localhost';

验证方法2:实际连接测试

# 从本地测试
mysql -u root -p123456 -D yeyuge -e "CREATE TABLE IF NOT EXISTS connection_test (test_id INT); DROP TABLE connection_test; SELECT 'yeyuge数据库访问正常' as result;"
# 从远程测试(在另一台机器上)
mysql -u root -p123456 -h 8.138.211.30 -D yeyuge -e "SELECT '远程访问yeyuge成功' as result;"

验证方法3:完整功能测试

# 测试脚本:test_yeyuge_access.sh
mysql -u root -p123456 << EOF
USE yeyuge;
-- 测试创建表
CREATE TABLE IF NOT EXISTS test_permissions (
id INT AUTO_INCREMENT PRIMARY KEY,
data VARCHAR(100),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- 测试插入数据
INSERT INTO test_permissions (data) VALUES ('测试数据1'), ('测试数据2');
-- 测试查询数据
SELECT * FROM test_permissions;
-- 测试删除表
DROP TABLE test_permissions;
SELECT '所有权限测试通过' as result;
EOF

7. 如果遇到权限问题

如果 root 用户仍然无法访问,执行以下修复命令:

-- 确保root用户有全局权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;
-- 或者重新设置root密码和权限
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
-- 刷新权限
FLUSH PRIVILEGES;

8. 常用管理命令

-- 查看所有用户
SELECT user, host FROM mysql.user;
-- 查看数据库权限
SELECT * FROM mysql.db WHERE Db = 'yeyuge';
-- 查看表权限
SELECT * FROM mysql.tables_priv WHERE Db = 'yeyuge';
-- 删除数据库(如果需要重新创建)
-- DROP DATABASE yeyuge;

完成以上步骤后,root 用户就应该能够完全访问 yeyuge 数据库了。您可以通过测试脚本来验证所有功能是否正常。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/941315.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【完整版】vcruntime140_1.dll缺失?3步快速修复教程(含官方修复工具+系统适配指南)

当你在运行 Photoshop、Premiere、WPS 或游戏时出现“由于找不到 vcruntime140_1.dll,无法继续执行代码”的提示,不要慌。本文详细讲解 vcruntime140_1.dll 文件的作用、缺失原因,并提供三种权威修复方案:微软官方…

linux 学习平台 arm+x86 搭建 - 详解

linux 学习平台 arm+x86 搭建 - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monac…

如何系统化掌握 iOS 26 App 耗电管理,多工具协作

本文聚焦 iOS 26 App 耗电管理 /能耗监控 /后台唤醒优化主题,从电量下降速率、资源占用、后台任务、文件 IO/网络访问、版本差异等维度构建监控体系。结合多工具(Xcode Instruments、KeyMob 克魔、APM平台、文件工具…

user read only folder

setfacl -R -m u:iasloguser:r-x /scb/iads/gateway/log/ setfacl -R -m d:u:iasloguser:r-x /scb/iads/gateway/log/ d:u: is default ACL getfacl /scb/iads/gateway/log/

告别重复劳动,MonkeyCode 让你的开发团队拥有永动机

告别重复劳动,MonkeyCode 让你的开发团队拥有"永动机"作为一个在代码海洋里摸爬滚打了多年的开发者,我见过太多团队陷入这样的困境:代码审查耗时耗力、新人培养成本高昂、文档更新永远滞后、重复性工作占…

cpu for rhel8 on vmware

yum install sysstat -y systemctl start sysstat systemctl enable sysstat systemctl status sysstat tuned-adm list tuned-adm profile throughput-performance tuned-adm active echo 1 second,total 3 times mps…

CentOS7安装Python3.10环境

主要步骤:依赖=>下载=>编译=>配置 依赖  常见错误没有安装相关的依赖库The necessary bits to build these optional modules were not found:  _curses  _curses_panel  _dbm  _gdbm  _lzma  …

2025 年冷库板厂家最新推荐榜:前五优质生产商盘点,含聚氨酯 / 保温 / 阻燃板企业选购指南 聚氨酯夹心板/聚氨酯保温板厂家推荐

引言2025 年国内冷链行业持续扩容,生鲜电商、医药冷链等领域对冷库板的需求呈爆发式增长,然而市场上产品质量参差不齐,部分厂商存在导热系数不达标、阻燃性能不足等问题,采购方难以精准筛选优质供应商。新版冷库节…

自主进化的AI大模型架构设想(解决大模型时效性问题):知识网络的拓扑设计 - 详解

自主进化的AI大模型架构设想(解决大模型时效性问题):知识网络的拓扑设计 - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; fon…

2025 年大连 AI 品牌最新推荐排行榜:甄选懂商业重实效的实力服务商大连Ai培训/大连Ai开发/大连Ai推广公司推荐

引言 随着 AI 技术加速渗透商业场景,大连本地企业对 AI 服务的需求呈爆发式增长,但行业乱象却让企业陷入选择困境:技术与商业脱节的服务导致 AI 工具沦为 “摆设”,缺乏实战指导的培训让企业学完仍无法落地,远程服…

2025 年 MacBook / 苹果电脑清理应用程序最新推荐榜单:精选适配 macOS 系统的高性能系统优化工具

引言 随着 MacBook 等苹果电脑在工作与生活中的广泛应用,用户对系统流畅度和存储空间管理的需求愈发迫切。长期使用后,电脑易堆积缓存、冗余文件,还可能遭遇恶意软件侵扰,导致运行卡顿、存储空间告急,而 macOS 自…

2025 生物质颗粒机厂家推荐榜:聚焦高效环保,山东博力达机械成优选​

随着 “双碳” 目标推进与环保政策趋严,生物质能作为可再生能源的核心组成部分,市场需求持续攀升,带动生物质颗粒机行业快速发展。据行业预测,2025 年中国生物质颗粒机市场规模将达到约 150 亿元人民币,年复合增长…

.NET驾驭Word之力:基于规则自动生成及排版Word文档

.NET驾驭Word之力:基于规则自动生成及排版Word文档在现代办公环境中,自动化文档生成和排版已经成为提高工作效率的重要手段。MudTools.OfficeInterop.Word 是一个强大的 .NET 库,它封装了 Microsoft Word 的 COM 组…

2025 年国内氧化锆陶瓷厂家最新推荐排行榜:含黑色 / 白色 / 电子陶瓷等品类公司精选

引言 随着氧化锆陶瓷在智能手机、航空航天、新能源汽车等领域的应用愈发广泛,市场对优质产品的需求持续攀升。但当前行业存在企业技术水平悬殊、产品质量参差不齐的问题,部分企业缺乏核心技术,难以满足高端市场对高…

2025 运动木地板厂家最新推荐榜:权威甄选行业前五优质品牌,附专业选择指南

引言 随着体育产业迈向 7 万亿元规模目标,运动木地板作为场馆核心设施,其品质直接关乎运动安全与体验。但当前市场品牌繁杂,既有技术落后、以次充好的劣质产品,也有新兴品牌凭借创新技术快速崛起,采购方难以精准甄…

2025年液压阀块厂家权威推荐榜:液压阀块加工、阀块零件机加工、液压阀加工、各种液压阀块专业制造商深度解析

2025年液压阀块厂家权威推荐榜:液压阀块加工、阀块零件机加工、液压阀加工、各种液压阀块专业制造商深度解析 液压传动技术作为现代工业装备的核心动力传输方式,其关键组件液压阀块的加工质量直接影响整个液压系统的…

rust如何查看和修改当前编译器版本

查看版本: rustc --version输出: rustc 1.90.0-nightly (855e0fe46 2025-07-11) 说明使用的是1.90.0的nightly版本查看当前可用的编译器版本 rustup toolchain list输出: stable-x86_64-pc-windows-msvc stable-x86_64…

大端存储(Big-Endian)和小端存储(Little-Endian)的区别

核心概念:内存地址与字节顺序 内存地址: 计算机内存被划分为连续的字节单元,每个单元都有一个唯一的地址。地址通常从低地址向高地址增长。多字节数据: 像 int(通常4字节)、short(通常2字节)、long(通常4或8字…

2025 年最新推荐!国内污水处理设备优质厂家排行榜,助力企业精准选靠谱设备

一、污水处理设备推荐榜推荐一:山东格林诺斯环保科技有限公司推荐指数:★★★★★ 口碑评分:9.9 分 品牌介绍:总部位于山东省诸城市密州街道,注册资金 1000 万元,占地面积 6000 余平方米,是由专业技术人才、工程…

基于OpenGL实现三维树木生长动画的解决方案

基于OpenGL实现三维树木生长动画的解决方案,包含L-系统分形算法、动态生长控制和完整代码实现:一、核心算法设计 1. L-系统规则定义 typedef struct {char axiom[20]; // 初始符号串char rules[5][2]; // …