记录docker安装mysql8

发布时间 2023-04-04 17:00:31作者: 陈岚

安装docker:yum install docker

启动docker服务: systemctl start docker

关闭docker服务:systemctl stop docker

docker服务开机自启:systemctl enable docker

 

指定安装路径

关闭服务:systemctl stop docker

将默认安装的文件夹移动到需要的位置:mv /var/lib/docker /home/docker

创建软连接:ln -s /home/docker /var/lib/docker

启动服务:systemctl start docker

 

拉取指定版本镜像:docker pull mysql:8.0.32

 

容器启动后,进入容器内部:docker exec -it mysql8 /bin/bash

1、删除容器

1)首先需要停止所有的容器

docker stop $(docker ps -a -q)

2)删除所有的容器(只删除单个时把后面的变量改为container id即可)

docker rm $(docker ps -a -q)

以下命令可以创建

docker run -itd --name mysql8  -p 3306:3306 -e MYSQL_ROOT_PASSWORD=gQHzJy6aGy4 mysql:8.0.32

 以下脚本实现配置文件映射到服务器本地且可以正常启动。

docker run -itd --name mysql8  -p 3306:3306 -e MYSQL_ROOT_PASSWORD=gQHzJy6aGy4 -v /home/mysql8/conf/my.cnf:/etc/my.cnf:rw mysql:8.0.32

进入容器后配置密码插件和账号权限

select user,host,plugin from user;

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'gQHzJy6aGy4';

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'gQHzJy6aGy4';

flush privileges;

如root@%账号不存在,需要先创建然后赋权

create USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'gQHzJy6aGy4';

grant all privileges on *.* to ‘root’@’%’;

在服务器本地执行mysql -u root -p还是持续1045,但是进入容器后可以访问,进入容器后修改密码插件。

未实现配置文件映射到服务器本地。

原因:映射路径不正确,无法获取到对应文件

 

my.cnf默认内容如下:

# For advice on how to change settings please see

# http://dev.mysql.com/doc/refman/8.0/en/server-configuration-defaults.html

 

[mysqld]

#

# Remove leading # and set to the amount of RAM for the most important data

# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.

# innodb_buffer_pool_size = 128M

#

# Remove leading # to turn on a very important data integrity option: logging

# changes to the binary log between backups.

# log_bin

#

# Remove leading # to set options mainly useful for reporting servers.

# The server defaults are faster for transactions and fast SELECTs.

# Adjust sizes as needed, experiment to find the optimal values.

# join_buffer_size = 128M

# sort_buffer_size = 2M

# read_rnd_buffer_size = 2M

 

# Remove leading # to revert to previous value for default_authentication_plugin,

# this will increase compatibility with older clients. For background, see:

# https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_default_authentication_plugin

# default-authentication-plugin=mysql_native_password

skip-host-cache

skip-name-resolve

datadir=/var/lib/mysql

socket=/var/run/mysqld/mysqld.sock

secure-file-priv=/var/lib/mysql-files

user=mysql

 

pid-file=/var/run/mysqld/mysqld.pid

[client]

socket=/var/run/mysqld/mysqld.sock

 

!includedir /etc/mysql/conf.d/

 

 

以下命令启动失败,启动后自行关闭

docker run -itd --name mysql8  -p 3306:3306 -e MYSQL_ROOT_PASSWORD=gQHzJy6aGy4 --restart=always -v /home/mysql8/log:/var/log/mysql -v /home/mysql8/data:/var/lib/mysql -v /home/mysql8/conf:/etc/mysql mysql:8.0.32

以下命令启动失败,持续正在重启

docker run -p 3306:3306 --name mysql8 --restart=always -v /home/mysql8/log:/var/log/mysql -v /home/mysql8/data:/var/lib/mysql -v /home/mysql8/conf:/etc/mysql -e MYSQL_ROOT_PASSWORD=gQHzJy6aGy4 -d mysql:8.0.32