docker安裝mysql

Docker安裝

  • 安裝yum-utils:
    yum install -y yum-utils device-mapper-persistent-data lvm2
    
  • 爲yum源添加docker倉庫位置:
    yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    
  • 安裝docker:
    yum install docker-ce
    
  • 啓動docker:
    systemctl start docker
     

     Mysql安裝

  • 下載mysql5.7的docker鏡像:
    docker pull mysql:5.7
    
  • 使用docker命令啓動:
    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.7windows下命令,需注意G:盤爲docker共享驅動盤(Shared Drives),宿主機目錄一定要存在,如: G:\docker\mydata\mysql\log
docker run --name mysql-5.7 -d -p 3306:3306 -v G:\docker\mydata\mysql\log:/var/log/mysql -v G:\docker\mydata\mysql\data:/var/lib/mysql -v G:\docker\mydata\mysql\conf:/ etc/mysql -e MYSQL_ROOT_PASSWORD=root mysql:5.7

PS: docker鏡像不具有存儲特性,鏡像屬於一次性產物,每次都會重置,volume就變得很重要了,-v參數就是設置volume.

  • 基本參數說明
    • -p 3306:3306:將容器的3306端口映射到主機的3306端口
    • -v /mydata/mysql/conf:/etc/mysql:將配置文件夾掛在到主機
    • -v /mydata/mysql/log:/var/log/mysql:將日誌文件夾掛載到主機
    • -v /mydata/mysql/data:/var/lib/mysql/:將數據文件夾掛載到主機
    • -e MYSQL_ROOT_PASSWORD=root:初始化root用戶的密碼
    • -d : 運行到後臺
  • 附加參數說明
    • --restart=always:設置啓動Docker後自動運行容器
    • --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci:防止中文亂碼
    • --rm:windows下stop後自動rm在stop ps中的鏡像,linux下次參數不能使用
  • 查看mysql鏡像是否已正常運行:
    docker ps

或者 查看是否有mysql相關日誌

docker logs mysql-5.7
  • 進入運行mysql的docker容器:
    docker exec -it mysql /bin/bash
  • 使用mysql命令打開客戶端:
    mysql -uroot -proot --default-character-set=utf8
    
  • 創建mall數據庫:
    create database mall character set utf8PS: 數據庫創建好後,可以通過Navicat等mysql客戶端工具訪問數據庫,進行相關操作,下面則是通過上傳相關腳本來初始化數據庫表及表數據
  • 安裝上傳下載插件,並將docment/sql/mall.sql上傳到Linux服務器上:
    yum -y install lrzsz
    
  • 將mall.sql文件拷貝到mysql容器的/目錄下:
    docker cp /mydata/mall.sql mysql:/
    
  • 將sql文件導入到數據庫:
    use mall;
    source /mall.sql;
    
  • 創建一個reader帳號並修改權限,使得任何ip都能訪問:          
grant all privileges on *.* to 'reader' @'%' identified by '123456';

PS: 1.建立一個名爲reader的用戶,密碼爲123456,%號意思是任何ip。grant all是授權全部權限 *.*爲全部數據庫的全部表的全部權限,最好點左邊的不要*,爲一個特定數據庫就好了。這樣子就可以ip遠程訪問這個docker數據庫了。
2. 連不上注意一下這個配置文件,/etc/mysql/my.conf(或者/etc/mysql/mysql.conf.d/mysqld.cnf)的配置文件的bind-address行註釋掉,又或者改成bind-address = 0.0.0.0

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章