news 2026/5/1 11:32:22

阿里云服务器上使用docker容器部署了mysql,但是现在想直接在服务器上部署mysql怎么操作?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
阿里云服务器上使用docker容器部署了mysql,但是现在想直接在服务器上部署mysql怎么操作?
在阿里云服务器上使用docker容器部署了mysql,但是在操作时发现明明数据库中有表但是使用select查询时却显示表不存在,应该是Linux环境中大小写敏感的原因,在MySQL中,控制大小写敏感的参数是lower_case_table_names。在Linux系统上,MySQL默认是大小写敏感的(即lower_case_table_names=0)。我们可以将其设置为1(表示不区分大小写)或2(表示存储为指定的大小写,但在比较时转换为小写)。但是想要在MySQL 8.0中,lower_case_table_names的修改限制,貌似只能在初始化之前设置。服务器之前已经使用Docker容器部署了MySQL数据,Docker的存储和网络性能可能影响数据库稳定性,所以想着干脆干掉Docker容器直接在服务器上部署。

步骤 1: 检查并停止 Docker MySQL 容器

首先,确认 Docker 容器中的 MySQL 是否在运行。如果容器占用 3306 端口,直接安装 MySQL 会失败。

  • 查看运行中的 Docker 容器(在服务器上输入以下命令):

    docker ps # 检查是否有名为 "mysql" 或其他 MySQL 容器在运行
  • 如果容器在运行,停止并移除它(可选,避免冲突):

    docker stop mysql # 停止容器 docker rm mysql # 移除容器(如果不再需要)这里最后参数mysql是你的mysql容器名称
  • 注意:如果需保留容器数据,仅停止容器即可(不运行docker rm)。Docker 容器停止后,3306 端口会释放 。

步骤2: 更新系统并安装MySQL

使用 Linux 包管理器在宿主机上安装 MySQL。

  • 更新软件包列表

sudo apt update # Ubuntu/Debian 或 sudo yum update # CentOS(根据系统执行,我用的阿里云执行的这个)
  • 安装MySQL服务器

    • Ubuntu/Debian:

      sudo apt install mysql-server -y
    • CentOS:

      sudo yum install mysql-server -y
    • 安装后自动启动服务。验证状态:

      sudo systemctl status mysql # 或 mysqld (CentOS)
    • 如果没有启动,则先执行启动命令

      sudo systemctl start mysql # Ubuntu/Debian 或 sudo systemctl start mysqld # CentOS
步骤3: 配置MySQL安全设置
  • 运行安全脚本以设置root密码、移除匿名用户等:

    sudo mysql_secure_installation
  • 根据提示操作:

    • 设置 root 密码(建议强密码)。

    • 移除匿名用户(选择Y)。

    • 禁止 root 远程登录(根据需求选择,如果需远程访问选N)。

    • 删除测试数据库(选择Y)。

    • 重新加载权限表(选择Y)。

步骤 4: 配置防火墙和阿里云安全组

确保本地防火墙和阿里云安全组允许 MySQL 端口(3306)。

  • 开放本地防火墙(如果使用 UFW):

    sudo ufw allow 3306/tcp # 允许 MySQL 端口 sudo ufw reload # 重新加载规则 或者 sudo firewall-cmd --list-all #查看防火墙列表 sudo firewall-cmd --permanent --add-port=3306/tcp #添加3306端口 sudo firewall-cmd --reload #重新加载规则
  • 阿里云控制台配置

    1. 登录阿里云控制台,进入ECS 实例>安全组

    2. 添加入站规则:协议类型TCP,端口范围3306,源 IP0.0.0.0/0(或你的 IP 段,建议尽量不要开放所有的ip)。

    3. 保存规则。

步骤 5: 验证 MySQL 连接

测试宿主机上的 MySQL 是否可访问:

mysql -u root -p # 输入步骤 3 设置的密码
  • 成功登录后,执行简单 SQL 命令:

    SHOW DATABASES; -- 查看数据库列表
  • 如果连接失败,检查端口冲突:

    sudo netstat -tunlp | grep 3306 # 查看 3306 端口占用
关键注意事项
  • 端口冲突处理:如果 Docker 容器未完全停止,或残留进程占用 3306 端口,使用sudo kill <进程ID>结束进程(见引用[4])4

  • 数据迁移:如果需要将 Docker 容器中的 MySQL 数据迁移到宿主机,先备份容器数据(docker exec -it mysql mysqldump -u root -p dbname > backup.sql),然后导入宿主机 MySQL。

  • 性能影响:直接部署 MySQL 通常比 Docker 容器性能更高,但需手动管理依赖和更新(参考引用[3] 的资源隔离对比)3

  • 安全性:避免同时运行 Docker MySQL 和宿主机 MySQL,防止资源竞争。

配完了发现忘记了最关键的一步,设置MySQL的大小写敏感权限。。

步骤 1: 停止 MySQL 服务

  • (在服务器上输入以下命令):

sudo systemctl stop mysqld

步骤 2: 备份所有数据

  • (当然我是新建的不需要,有需要的可以在服务器上输入以下命令):

    sudo mysqldump -u root -p --all-databases --routines --events > /root/mysql_full_backup_$(date +%F).sql

步骤 3. 删除原有数据目录

sudo rm -rf /var/lib/mysql/*

步骤4. 修改配置文件

sudo vi /etc/my.cnf

[mysqld]区块添加配置:

[mysqld] lower_case_table_names=1 # 1不区分大小写,0区分大小写

步骤5. 重新初始化数据库

sudo mysqld --initialize --user=mysql --lower-case-table-names=1

步骤6. 获取临时root密码

sudo grep 'temporary password' /var/log/mysqld.log

步骤7. 启动服务并修改密码

sudo systemctl start mysqld mysql -u root -p # 使用临时密码登录
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';

步骤8. 恢复备份数据

mysql -u root -p < /root/mysql_full_backup_*.sql

步骤9. 重启Mysql

systemctl restart mysqld
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 3:36:58

GPT-5.2 全面解读:AI 发展新阶段

2025 年 12 月 11 日&#xff0c;OpenAI 正式发布了 GPT-5.2 系列模型&#xff0c;这是迄今为止该公司针对专业知识工作与复杂任务处理打造的最强模型系列之一。此发布也是 OpenAI 在 AI 激烈竞争格局下的一次重要战略调整&#xff0c;特别是为了应对 Google Gemini 3 等先进模…

作者头像 李华
网站建设 2026/5/1 7:11:48

3000亿参数降维打击:ERNIE 4.5用2Bits量化重构企业AI经济学

3000亿参数降维打击&#xff1a;ERNIE 4.5用2Bits量化重构企业AI经济学 【免费下载链接】ERNIE-4.5-300B-A47B-2Bits-TP4-Paddle 项目地址: https://ai.gitcode.com/hf_mirrors/baidu/ERNIE-4.5-300B-A47B-2Bits-TP4-Paddle 导语 百度ERNIE 4.5系列大模型以3000亿总参…

作者头像 李华
网站建设 2026/4/28 18:38:49

deepseek技术总结

dentify the entity: DeepSeek (月之暗面). Identify the core task: Summarize its core technical advantages in ~1000 characters. Recall/Search information about DeepSeek: What is it known for? What are its stated goals or technical focuses? What it is: A pr…

作者头像 李华
网站建设 2026/5/1 7:22:21

66、Linux系统脚本编写、邮件配置、数据库使用及安全设置指南

Linux系统脚本编写、邮件配置、数据库使用及安全设置指南 1. 环境变量与脚本编写 在Linux系统中,环境变量扮演着重要角色。以下是一些关键环境变量及其作用: - PS1 :该环境变量包含各种格式化代码和文本,用于设置主命令提示符。例如,你可以通过设置PS1让命令提示符显…

作者头像 李华
网站建设 2026/5/1 9:53:25

高效赋能业务:B端产品表格设计要素与最佳实践解析

在B端产品设计中&#xff0c;表格是展示结构化数据的核心组件&#xff0c;承担着高效呈现信息、辅助用户决策的关键作用。面对大量数据&#xff0c;优秀的表格设计能提升可读性和操作效率&#xff0c;直接影响工作效能。 表格设计的核心价值与常见挑战 表格能以紧凑形式清晰展示…

作者头像 李华