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:性能略高,但部分语言排序可能不准确
相关推荐
奥尔特星云大使6 小时前
MySQL 慢查询日志slow query log
android·数据库·mysql·adb·慢日志·slow query log
来自宇宙的曹先生6 小时前
MySQL 存储引擎 API
数据库·mysql
老苏畅谈运维8 小时前
Oracle的connect by level在MySQL中的华丽变身
mysql·oracle
周杰伦的稻香10 小时前
MySQL5.7.44编译安装
数据库·mysql
叁沐12 小时前
MySQL 33 我查这么多数据,会不会把数据库内存打爆?
mysql
程序新视界16 小时前
三种常见的MySQL数据库设计最佳实践
数据库·后端·mysql
没有bug.的程序员16 小时前
MySQL 安全与权限管理:从基础到生产级安全实践
java·mysql·安全·adb·权限
数据与人17 小时前
MySQL 8.0 InnoDB ReplicaSet 完整配置指南与切换
数据库·mysql·adb
合作小小程序员小小店18 小时前
web网页开发,在线%推荐算法学院培养计划,图书推荐,基于Python,FlaskWeb,用户和物品推荐MySql
python·mysql·算法·flask·推荐算法
用手码出世界18 小时前
MySQL存储过程
mysql