1130 - Host ‘xxx.x.xx.xxx‘is not allowed to connect to this MySQL server

以下为本次问题的解决办法:

1、暂停mysql容器: docker stop mysql

2、删除mysql容器:docker rm mysql

3、查看mysql容器是否被删除:docker ps -a #没有mysql容器就是删除成功

4、run mysql容器:

复制代码
docker run -d --name mysql-server --restart always -v mysql-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=1234  -e MYSQL_USER=rootname -e MYSQL_PASSWORD=1234  -e MYSQL_DATABASE=your_database -p 3306:3306 mysql:8.0 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

以下为解析:

  1. -d

    后台运行容器(detached mode),避免阻塞终端。

  2. --name mysql-server

    为容器指定名称,便于后续管理(如 docker start mysql-server)。

  3. --restart always

    设置容器自动重启策略:

    • 容器退出时自动重启
    • Docker 服务重启时自动启动
    • 适用于需要高可用性的服务(如数据库)。
  4. mysql:8.0

    指定镜像版本为 MySQL 8.0(建议使用具体版本号而非 latest,确保环境稳定性)。

  5. -v mysql-data:/var/lib/mysql
    创建名为 mysql-data 的命名卷(volume),将容器内 /var/lib/mysql 目录(MySQL 数据存储路径)挂载到卷中。
    作用

    • 避免容器删除时数据丢失
    • 支持多容器共享数据
    • 便于数据备份与迁移
  6. MYSQL_ROOT_PASSWORD=1234

    设置 MySQL root 用户密码(必填)。
    注意

    • 生产环境建议使用强密码(至少 16 位,包含大小写、数字、符号)
    • 避免在命令行中明文传递敏感信息(可用 --env-file 加载环境变量文件)
  7. MYSQL_USER=rootname

    创建新用户 rootname(非 root 用户)。
    注意

    • 不要将新用户命名为 root(会与系统默认 root 用户冲突)
    • 建议使用业务相关的用户名(如 app_user
  8. MYSQL_PASSWORD=1234

    设置 rootname 用户的密码。
    注意

    • MYSQL_ROOT_PASSWORD 相同密码存在安全风险
    • 生产环境需使用不同的强密码
  9. MYSQL_DATABASE=your_database

    初始化一个名为 your_database 的数据库(容器启动时自动创建)。

  10. -p 3306:3306
    将容器内的 MySQL 服务端口(3306)映射到主机的 3306 端口。
    访问方式

    • 主机本地:mysql -h 127.0.0.1 -u rootname -p
    • 外部网络:mysql -h [主机IP] -u rootname -p
      注意
    • 确保主机 3306 端口未被占用(可用 netstat -tulpn | grep 3306 检查)
    • 生产环境建议修改映射端口(如 3307:3306)减少暴露风险
  11. --character-set-server=utf8mb4

    设置服务器默认字符集为 utf8mb4(支持 emoji 等特殊字符)。

  12. --collation-server=utf8mb4_unicode_ci

    设置默认排序规则为 utf8mb4_unicode_ci(不区分大小写,支持更广泛的语言排序)。
    对比

    • utf8mb4_unicode_ci:更标准的 Unicode 排序
    • utf8mb4_general_ci:性能略高,但部分语言排序可能不准确
相关推荐
陈卓41030 分钟前
MySQL-主从复制&分库分表
android·mysql·adb
你都会上树?1 小时前
MySQL MVCC 详解
数据库·mysql
长征coder2 小时前
AWS MySQL 读写分离配置指南
mysql·云计算·aws
ladymorgana3 小时前
【docker】修改 MySQL 密码后 Navicat 仍能用原密码连接
mysql·adb·docker
PanZonghui3 小时前
Centos项目部署之安装数据库MySQL8
linux·后端·mysql
GreatSQL社区3 小时前
用systemd管理GreatSQL服务详解
数据库·mysql·greatsql
掘根3 小时前
【MySQL进阶】错误日志,二进制日志,mysql系统库
数据库·mysql
weixin_438335403 小时前
基础知识:mysql-connector-j依赖
数据库·mysql
小明铭同学3 小时前
MySQL 八股文【持续更新ing】
数据库·mysql
程序员岳焱13 小时前
Java 与 MySQL 性能优化:Java 实现百万数据分批次插入的最佳实践
后端·mysql·性能优化