Docker安装mysql踩坑

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

Guess you like

Origin blog.csdn.net/qq_41819893/article/details/121285996