Docker安裝MySQL8.0


環境

  • CentOS 7.5
  • Docker 1.13.1
  • MySQL 8.0.16

安裝

拉取鏡像

默認拉取最新版本的鏡像

$ docker pull mysql

如果要指定版本,使用下面的命令

$ docker pull mysql:8.0.16

創建數據目錄和配置文件

在宿主機創建放置mysql的配置文件的目錄和數據目錄,並且進行授權

$ mkdir -p /usr/mysql/conf /usr/mysql/data

$ chmod -R 755 /usr/mysql/

創建配置文件

在上面創建的配置文件目錄/usr/mysql/conf下創建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/

啟動創建容器

$ docker run --restart=unless-stopped -d --name mysql -v /usr/mysql/conf/my.cnf:/etc/mysql/my.cnf -v 
/usr/mysql/data:/var/lib/mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql

參數解釋:
-v : 掛載宿主機目錄和 docker容器中的目錄,前面是宿主機目錄,后面是容器內部目錄

-d : 后台運行容器

-p 映射容器端口號和宿主機端口號

-e 環境參數,MYSQL_ROOT_PASSWORD設置root用戶的密碼

執行上述命令后,執行查詢容器的命令就可以看到創建的mysql容器

$ docker ps -a

結果如下所示:

問題

上述雖然安裝好了mysql,但是使用遠程的Navicat連接時提示錯誤,不能正確連接mysql,此時需要修改按照下面說的步驟修改一下mysql的密碼模式以及主機等內容才可以。

修改mysql密碼以及可訪問主機

  • 進入容器內部
$ docker exec -it mysql /bin/bash
  • 連接mysql
$ mysql -uroot -p
  • 使用mysql庫
$ mysql> use mysql
  • 修改訪問主機以及密碼等,設置為所有主機可訪問
$ mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '新密碼';

注意:

mysql_native_password,mysql8.x版本必須使用這種模式,否則navicate無法正確連接

  • 刷新
$ mysql> flush privileges

經過以上步驟,再次遠程使用Navicat連接數據庫時就可以正常連接了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM