虚拟机上登陆mysql不了

来源:2-7 Docker运行Mysql Server

迷路666

2022-07-04

按课程步骤创建配置的文件,直接进到容器里去登录mysql,并且这两条命令都执行了
mysql>GRANT ALL PRIVILEGES ON . TO ‘root’@’%’ WITH GRANT OPTION; //赋予任何主机上以root身份访问数据的权限
mysql>FLUSH PRIVILEGES;
图片描述
但是在虚拟机上还是不能连接
图片描述
防火墙也关闭了

配置文件内容拷贝的您的,没有改动
[mysqld]
user=mysql
character-set-server=utf8
default_authentication_plugin=mysql_native_password
secure_file_priv=/var/lib/mysql
expire_logs_days=7
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
max_connections=1000
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8

写回答

1回答

清风

2022-07-05

将挂载的 /etc/mysql/my.cnf 中的bind-address参数修改成0.0.0.0,表示允许任何ip主机访问此数据库

bind-address = 0.0.0.0


重新创建mysql容器

0
3
清风
MySQL 容器未将 3306 端口暴露到主机。 root 用户未被授予远程访问权限。 3. 检查 MySQL 配置 修改 MySQL 用户权限: 在容器中运行 MySQL,并执行以下命令: bash 复制代码 docker exec -it my-mysql-container bash mysql -u root -p 进入 MySQL 后,执行: sql 复制代码 ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'your_password'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES; 这将允许 root 用户通过任何 IP 地址进行访问。 检查 MySQL 配置文件: MySQL 默认可能只允许本地连接,需修改 my.cnf 文件中的绑定地址: 在 MySQL 容器中找到配置文件路径: bash 复制代码 docker exec -it my-mysql-container bash find / -name my.cnf 修改配置文件,确保以下内容: ini 复制代码 [mysqld] bind-address=0.0.0.0 重启 MySQL 容器: bash 复制代码 docker restart my-mysql-container 4. 检查 Docker 网络 确保 MySQL 容器绑定到正确的网络。 运行以下命令查看网络配置: bash 复制代码 docker inspect my-mysql-container 确保 HostConfig.PortBindings 映射了 3306:3306。 如未正确配置,可以重新运行容器: bash 复制代码 docker run --name my-mysql-container -e MYSQL_ROOT_PASSWORD=your_password -p 3306:3306 -d mysql:8.0 5. 防火墙和 SELinux 检查 如果仍然无法登录,检查主机的防火墙规则: bash 复制代码 sudo ufw allow 3306 对于 CentOS,可能需要关闭 SELinux 或配置规则: bash 复制代码 sudo setsebool -P docker_connect_any 1 6. 测试连接 再次尝试登录: bash 复制代码 mysql -h 127.0.0.1 -P 3306 -u root -p 如果仍有问题,请提供以下详细信息: MySQL 容器运行命令。 Docker ps 和 inspect 输出。 错误消息内容。
2024-11-27
共3条回复

Kubernetes 入门到进阶实战,系统性掌握 K8s 生产实践

阿里云最有价值专家亲授,云原生时代必备技能

1501 学习 · 613 问题

查看课程