1、SQLlog连接docker数据库错误码2003
报错:“ERROR 2003: Can't connect to MySQL server on 'localhost' (10061)”
检查:
- 查看主机MySQL端口号和虚拟机MySQL端口号,查看是不是绑定错误,比如主机3309,虚拟机3306,肯定会绑定不了
docker run -p 主机端口:虚拟机端口--name mysql
- 主机mysql服务没有启动,打开服务管理找到mysql服务启动就行
- 查看主机MySQL下my.ini 文件,如果port 不是3306端口, 那就把port改为3306,重启mysql服务
- 查看虚拟机ip地址,SQLyog中要连接docker中mysql数据库肯定是和主机在同一网段下,比如主机是192.168.10.5,虚拟机就是192.168.10.x(0<x<255)
- 如果以上都没问题,则先创建目录,编写配置文件,然后创建并启动mysql容器
mkdir /docker
mkdir /docker/mysql
mkdir /docker/mysql/conf
mkdir /docker/mysql/data
创建my.cnf配置文件
touch /docker/mysql/conf/my.cnf
my.cnf添加如下内容:
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
创建容器,启动
docker run \
--restart=always \
--privileged=true \
-p 3306:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/my.cnf:/etc/mysql/my.cnf \
-v /mydata/mysql/conf.d:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql
参数说明:
- –restart=always: 当Docker 重启时,容器会自动启动。
- –privileged=true:容器内的root拥有真正root权限,否则容器内root只是外部普通用户权限
- -v /mydata/mysql/log:/var/log/mysql 映射日志文件
- -v /opt/mysql/data/:/var/lib/mysql 映射数据目录
- -v /mydata/mysql/my.cnf:/etc/mysql/my.cnf 映射配置文件
- -v /mydata/mysql/conf.d:/etc/mysql/conf.d 映射配置文件
- -e MYSQL_ROOT_PASSWORD=123456 映射mysql root用户密码
- -d mysql 以后台方式启动
docker ps查看启动的服务,ports显示端口已经绑定
如果端口ports为空,则端口没有绑定
移除mysql服务,重新拉镜像
#列出所有容器 ID
docker ps
#停止所有容器
docker stop 容器名
#停止单个容器
docker stop 容器名
#删除所有容器
docker rm 容器名
#删除单个容器
docker rm 容器名
#删除所有的镜像
docker rmi 容器名
如果无法按容器名启动容器,输入docker ps -a查看,最前面的序列就是容器ID,按容器ID启动就行,删除容器同理
2、SQLyog连接mysql数据库错误码1045
先进入看看能不能进去mysql容器中
#第一步
docker exec -it mysql bash
#第二部
mysql -u root -p
#正常流程
[root@localhost ~]# docker exec -it mysql bash
root@eb3dbfb0958f:/# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7 MySQL Community Server (GPL)
Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
修改权限
方法一:允许root用户从任何主机连接到MYSQL
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '新密码' WITH GRANT OPTION;
方法二:允许root从主机192.168.10.56连接到MYSQL,并使用新密码登录
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.10.56' IDENTIFIED BY '新密码' WITH GRANT OPTION;
刷新权限
flush privileges;
登陆成功
提示:
查看报错日志:docker log 容器ID