1. 程式人生 > >docker 安裝mysql mongo

docker 安裝mysql mongo

Docker安裝Mysql

1.拉取映象

docker pull mysql/mysql-server

 

2.執行mysql

docker run -d -p 3306:3306 --name [Name] [ImageName]
//示例
docker run -d -p 3306:3306 --name mysql01 mysql/mysql-server

 

3.進入容器

docker exec -it [ContainerName] bash
//示例
docker exec -it mysql01 bash

4.進入mysql的命令列

命令列進入mysql的root賬戶:

mysql -uroot -p

這時候操作mysql會報錯 ,讓修改密碼 請看 常見錯誤解決模組

建立新使用者
mysql> CREATE USER 'test'@'localhost' IDENTIFIED BY 'pwd123456';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'test'@'localhost' WITH GRANT OPTION;
mysql> CREATE USER 'test'@'%' IDENTIFIED BY 'pwd123456';
mysql> GRANT ALL PRIVILEGES ON *.* TO '
test'@'%' WITH GRAN T OPTION;
修改MYSQL 預設字符集

新增到my.cnf

[mysqld]
character-set-server=utf8
[client]
default-character-set=utf8 
[mysql]
default-character-set=utf8

檢視字符集命令

show variables like '%char%';
docker容器引數啟動Mysql (用容器引數新增新使用者和修改root賬戶密碼,修改字符集)

直接複製這個就可以了

docker run -d -p 3306
:3306 -e MYSQL_USER="test" -e MYSQL_PASSWORD="password" -e MYSQL_ROOT_PASSWORD="password" --name [Name] [ImageName] --character-set-server=utf8 --collation-server=utf8_general_ci

這個和上面一樣只不過用換行整理過(不要複製這個,用不了)

docker run -d -p 3306:3306 
-e MYSQL_USER="test" 
-e MYSQL_PASSWORD="password" 
-e MYSQL_ROOT_PASSWORD="password" 
--name [Name] [ImageName] 
--character-set-server=utf8 
--collation-server=utf8_general_ci

掛載資料卷

mysql掛載資料卷

  提前在指定的目錄下建立一個my.cnf檔案,目錄名最好為英文且不帶特殊符號和空格,檔案內容如下,注意:貼上時要把每一行末尾的空格去除,否則執行時會報錯說utf8編碼錯誤

#注意:需要先建立/docker/mysql/config/my.cnf檔案和/docker/mysql/data資料夾

my.cnf如下

[mysqld]
user=mysql
character-set-server=utf8
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8

用外部volume

docker run -d -p 3306:3306 --name mysql01 -v=/docker/mysql/config/my.cnf:/etc/my.cnf -v=/docker/mysql/config/data:/var/lib/mysql mysql/mysql-server 

mongo掛載資料卷

docker run -d -p 27017:27017 --name mongo01 -v /docker/mongo/config:/data/configdb -v /docker/mongo/db:/data/db mongo

常見錯誤解決

修改密碼語句

mysql5.7版本語法:

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('password');

mysql5.7之後版本語法:

ALTER user 'root'@'localhost' IDENTIFIED BY 'password'
navicat連線mysql報錯1251解決方案

MySQL8.0,發現Navicat連線不上,總是報錯1251;

原因是MySQL8.0版本的加密方式和MySQL5.0的不一樣,連線會報錯。

1.先通過命令列進入mysql的root賬戶:

mysql -uroot -p

2.更改加密方式

ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;

3.重新修改密碼(注意修改你要遠端連線的使用者)

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

4.重新整理

 FLUSH PRIVILEGES;

Docker run with 環境變數和映象配置

備註: : When this is true (which is its default state, unless MYSQL_ROOT_PASSWORD is set or MYSQL_ALLOW_EMPTY_PASSWORD is set to true), a random password for the server's root user is generated when the Docker container is started
當這個MYSQL_RANDOM_ROOT_PASSWORD 為true 時 為root使用者設定密碼是沒有作用的還是會生成隨機的密碼,設定為false 或者不加這個環境變數