当前位置: 首页 > news >正文

阿里云服务器上使用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
http://www.jsqmd.com/news/76859/

相关文章:

  • Redis 的内存回收机制详解
  • 基于微信小程序的垃圾分类信息系统毕业设计项目源码
  • 5D动感影院设备与9D裸眼轨道影院投资价格对比解析
  • xv6 文件系统
  • Next.js配置进阶:从基础到企业级实践全指南
  • 2025十大厨余处理器解析:热门机型特点呈现,辅助选购决策 - 资讯焦点
  • VITS语音合成实战指南:从零开始打造你的专属AI语音助手
  • 生产计划和排产计划,到底差在哪?一文讲透生产管理本质
  • 技术拆解:1688 API 接口开发全流程与商品数据抓取方案
  • 阿里云新发的AgentRun 有哪些“大招”,一文详解来了
  • 95.08%准确率!字节跳动BFS-Prover-V2刷新AI数学推理纪录,开启定理证明实用化时代
  • java+vue+SpringBoot学生干部管理系统(程序+数据库+报告+部署教程+答辩指导)
  • 海鹦云:新能源电池产业出海浪潮中,外贸GEO优化如何成为关键胜负手? - 博客万
  • Tabula终极指南:快速从PDF提取表格数据的完整教程
  • 企业Agent落地的可靠实践
  • 2025年十大驱动轮加工厂排行榜,驱动轮加工厂选哪家好 - mypinpai
  • Kalidokit与Three.js VRM渲染器:虚拟角色动作捕捉完整解决方案
  • 北京格微建设工程有限公司在当地口碑如何?施工质量怎样 - myqiye
  • Windows功能组件手动部署:解决系统兼容性问题的完整指南
  • MetaMCP终极指南:一站式管理所有MCP服务器的完整解决方案
  • GPT-5.2 全面解读:AI 发展新阶段
  • 14、互联网应用全攻略:新闻组、邮件与即时通讯的使用指南
  • 2025年防爆型/有实力/国产智能型电动执行器生产商有哪些生产厂家,哪个牌子好,哪个公司好,知名品牌推荐? - 品牌推荐大师1
  • 医用级卫生巾怎么选?为何成为高要求女性的选择 - 速递信息
  • 15、Linux 网络工具与文件目录操作全解析
  • PDFMathTranslate中文乱码终极解决方案:从诊断到完美修复
  • 海鹦云:造纸产业出海乘风破浪,外贸GEO优化打开增长新航道 - 博客万
  • 16、Linux 文件管理与文件系统全解析
  • 新手小白之C#数组查询技巧全解析
  • 实用指南:Vue3计算属性如何兼顾模板简化、性能优化与响应式自动更新?