当前位置: 首页 > 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.cnnetsun.cn/news/16083.html

相关文章:

  • CentOS7 磁盘扩容
  • PDFMathTranslate中文乱码终极解决方案:从诊断到完美修复
  • 直接数字下变频 原理解释和python仿真
  • 告别低效内耗:2025中小企业办公新方式
  • 微信7.0.6提示升级问题解决方法
  • 大模型训练优化:5个内存效率提升技巧与实战配置指南
  • 英伟达发布OpenReasoning-Nemotron-32B:多智能体协作改写推理范式,32B参数刷新三大领域性能纪录
  • Lottie-Web实战指南:打造高性能动画应用
  • 思源宋体实战指南:从零到精通的字体应用全解析
  • 转载Centos7.9 MySQL 8.0 部署MGR高可用
  • Spring管理MyBatis Mapper接口的原理详解
  • ISO 19011-2018管理体系审核指南中文版资源详解
  • 第十届网络安全与信息工程国际会议(ICCSIE 2025)已被EI检索
  • MinerU API终极指南:3分钟快速上手PDF转Markdown神器
  • 12.12 作业
  • 简单上手的完整智能家居平台搭建指南
  • Linux 文件及用户的一些日常命令
  • 中央空调科普:从选型到维护全攻略,舒适生活的 “温度管家”
  • 3分钟极速部署:MuseScore跨平台音乐创作工具高效配置指南
  • 刚刚,DeepSeek又一重大突破,小身材大智慧玩出新高度
  • 计算广告:智能时代的营销科学与实践(八)
  • AI帮你做跨境!DeepBI助力亚马逊广告新手卖家实现质的飞跃
  • LCD字模工具终极对比:3款神器如何选择?
  • 终极收藏版:2025年最值得合作的GEO公司推荐,技术实力大揭秘!
  • QARM:多模态语义对齐与量化在推荐系统中的实践路径
  • AI 省钱双 buff:价格优化 + 优惠整合,省到实处
  • 用1/10的成本跑RAG?向量压缩+模型蒸馏+智能缓存实战指南
  • 毕业设计实战:基于SpringBoot+MySQL的机动车号牌管理系统,从0到1避坑全流程,导师都说稳!
  • 高密度互联:连接AI“积木”的精密桥梁
  • 2025十大项目管理工具揭晓:从轻量协作到企业级方案全解析