Docker安装MySQL
1 、到docker镜像仓库查看mysql版本
sudo docker pull mysql:5.7
2、查看下载的mysql
sudo docker images
3、创建实例并启动
sudo docker run -p 3306:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7
参数说明:
-p 3306:3306:将容器的3306端口映射到主机的3306端口
-v /mydata/mysql/conf:/etc/mysql:将配置文件挂载到主机
-v /mysdata/mysql/log:/var/log/mysql:将日志文件夹挂载到主机
-v /mydata/mysql/data:/var/lib/mysql:将配置文件夹挂载到主机
-e MYSQL_ROOT_PASSWORD=root:初始化root用户的密码
4 、配置文件内容
找到我们本地的mydata/mysql/conf
cd /mydata/mysql/conf
vi my.cnf
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[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
注意:解决MySQL连接慢的问题
在配置文件中加入如下,并重启mysql
[mysqld]
skip-name-resolve
解释:
skip-name-resolve:跳过域名解析
5 、重启mysql
docker restart mysql
6、docker启动后,mysql也跟着启动
docker update mysql --restart=always
7、使用Navicat数据库工具连接mysql
8、遇到的问题
- 在执行更新操作的时候,会报
[Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column ‘information_schema.PROFILING.SEQ’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
以上错误,我们设置my.cnf文件,添加
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
需要注意的一点是一定要添加在[mysqld]配置内,这样添加完后重启mysql才会生效
-
我们用工具连接数据库的时候,可能会出现连不上数据库的情况
首先我们进入到Docker,连上数据库
docker exec -it mysql /bin/bash mysql -uroot -p
输入数据库密码,前面我们设置的启动密码是root
## 从任何主机上使用root用户,密码:youpassword(你的root密码)连接到mysql服务器
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'youpassword' WITH GRANT OPTION;
## 刷新权限
FLUSH PRIVILEGES;
退出后,重启
docker restart mysql