前言
本章將使用docker安裝Mysql,前提條件是已經(jīng)安裝完docker并會(huì)使用docker。
如果還沒(méi)有安裝docker,可以參考在CentOS7下安裝Docker
如果還不會(huì)docker,但需要學(xué)習(xí)mongodb相關(guān)的知識(shí),可以參考另一篇博客,那里詳細(xì)講述了如何在Linux上安裝Mysql環(huán)境。
附上博客鏈接博客傳送門(mén)
安裝MySql
在dockerhub上查找鏡像

拉取鏡像
這里我們拉取官網(wǎng)最新8.0鏡像
[root@e2ab0x9jme3furrd ~]# docker pull mysql

查看鏡像
在鏡像列表中我們可以看到剛剛拉取的鏡像
[root@e2ab0x9jme3furrd ~]# docker images
REPOSITORY? ? TAG? ? ? IMAGE ID? ? ? CREATED? ? ? ? SIZE
mysql? ? ? ? latest? ? b05128b000dd? 10 days ago? ? 516MB
hello-world? latest? ? feb5d9fea6a5? 2 months ago? 13.3kB
centos? ? ? ? latest? ? 5d0da3dc9764? 2 months ago? 231MB
創(chuàng)建數(shù)據(jù)目錄和配置文件
在宿主機(jī)創(chuàng)建mysql的配置文件的目錄和數(shù)據(jù)目錄
$ mkdir -p /usr/mysql/conf /usr/mysql/data /usr/mysql/logs
創(chuàng)建配置文件
在配置文件目錄下創(chuàng)建MySQL的配置文件my.cnf
$ vim /usr/mysql/conf/my.cnf
添加配置文件信息
[client]
#socket = /usr/mysql/mysqld.sock
default-character-set = utf8mb4
[mysqld]
#pid-file? ? ? ? = /var/run/mysqld/mysqld.pid
#socket? ? ? ? ? = /var/run/mysqld/mysqld.sock
#datadir? ? ? ? = /var/lib/mysql
#socket = /usr/mysql/mysqld.sock
#pid-file = /usr/mysql/mysqld.pid
datadir = /usr/mysql/data
character_set_server = utf8mb4
collation_server = utf8mb4_bin
secure-file-priv = NULL
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links = 0
# Custom config should go here
!includedir /etc/mysql/conf.d/
創(chuàng)建容器
[root@e2ab0x9jme3furrd ~]# docker run --restart=unless-stopped -d --name mysql -v /usr/mysql/conf/my.cnf:/etc/mysql/my.cnf -v /usr/mysql/logs:/logs -v /usr/mysql/data:/var/lib/mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=lzx1922026241@ mysql
e364ef1e8a4f7fa6f50ac66edfe5d66e7441e0ecc005fa6c43e9f5dc6237ece1
參數(shù)解釋?zhuān)?/p>
-v : 掛載宿主機(jī)目錄和 docker容器中的目錄,前面是宿主機(jī)目錄,后面是容器內(nèi)部目錄
-d : 后臺(tái)運(yùn)行容器
-p 映射容器端口號(hào)和宿主機(jī)端口號(hào)
-e 環(huán)境參數(shù),MYSQL_ROOT_PASSWORD設(shè)置root用戶的密碼
查看容器啟動(dòng)情況
[root@e2ab0x9jme3furrd ~]# docker ps
CONTAINER ID? IMAGE? ? COMMAND? ? ? ? ? ? ? ? ? CREATED? ? ? ? ? ? ? STATUS? ? ? ? ? ? ? PORTS? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? NAMES
e364ef1e8a4f? mysql? ? "docker-entrypoint.s…"? About a minute ago? Up About a minute? 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp? mysql01
** 問(wèn)題:雖然已經(jīng)安裝好了mysql,但是無(wú)法使用navicat工具進(jìn)行連接時(shí)報(bào)錯(cuò),即無(wú)法遠(yuǎn)程連接。**
解決問(wèn)題
進(jìn)入容器內(nèi)部
[root@e2ab0x9jme3furrd ~]# docker exec -it mysql01 /bin/bash
連接mysql
root@e364ef1e8a4f:/# mysql -uroot -p
Enter password:
修改訪問(wèn)主機(jī)以及密碼,設(shè)置所有主機(jī)可訪問(wèn)
mysql> use mysqlReading table information for completion of table and column namesYou can turn off this feature to get a quicker startup with -ADatabase changedmysql>alter user'root'@'%'identified with mysql_native_password by'123456';Query OK, 0 rows affected (0.01 sec)
刷新權(quán)限
mysql> flush privileges;Query OK, 0 rows affected (0.01 sec)

至此,通過(guò)Docker方式安裝Mysql成功?。?!