Docker 安装MySQL
1、下载MySQL
下面有两个命令,一个是默认下载最新版,一个是下载指定版本,选一个就可以了
# 下载最新MySQL
docker pull mysql
# 下载指定版本(我用的5.7,这个5.7可以指定)
docker pull mysql:5.7
可以在docker的库中访问MySQL的镜像https://hub.docker.com/_/mysql?tab=tags
选择你要的数据库进行下载
查看下载的镜像,下面出现MySQL证明下载成功,如果没有权限就在命令前面加 sudo
就像这样 sudo docker images
,因为我是root账号所以不用sudo
也可以
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql latest 2fe463762680 5 days ago 514MB
hello-world latest d1165f221234 7 months ago 13.3kB
创建目录并赋予权限
mkdir -p /usr/local/mysql/data /usr/local/mysql/log
chmod -R 755 /usr/local/mysql/
mkdir -p /etc/mysql
chmod -R 755 /etc/mysql
2、启动创建容器
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端口
- –name:给容器命名
- -v : 挂载宿主机目录和 docker容器中的目录,前面是宿主机目录(Linux目录),后面是容器内部目录
- -d : 后台运行容器
- -p 映射容器端口号和宿主机端口号
- -e MYSQL_ROOT_PASSWORD=root,设置root用户的密码为root
3、查询创建好的容器
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bb312270f2bf mysql:5.7 "docker-entrypoint.s…" 26 seconds ago Up 25 seconds 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql
4、用Navicat测试一下是否成功
5、配置MySQL
查询MySQL相关目录
[root@localhost conf]# whereis mysql
mysql: /usr/lib64/mysql /etc/mysql /usr/local/mysql /usr/share/mysql
创建一个my.cnf,编辑文件按i,编辑完了按Esc,然后按wq保存,如果不保存按q!,后面都是编辑文件都是一样的操作
[root@localhost ~]# cd /mydata/mysql/conf
[root@localhost conf]# vi my.cnf
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
[root@localhost conf]# docker restart mysql
mysql
还可以看一下docker中映射的my.cnf
[root@localhost conf]# docker exec -it mysql /bin/bash
root@bb312270f2bf:/# cd /etc/mysql
root@bb312270f2bf:/etc/mysql# ls
my.cnf