1. 程式人生 > >Linux伺服器安裝Docker版redis/mysql

Linux伺服器安裝Docker版redis/mysql

安裝Redis

1,

docker search redis 

如下圖

2,下載官方版本

docker pull redis

3,啟動映象

docker run -p 6379:6379 -v $PWD/data:/data  -d redis:latest redis-server --appendonly yes

命令說明:

-p 6379:6379 :將容器的6379埠對映到主機的6379埠

-v $PWD/data:/data :將主機中當前目錄下的data掛載到容器的/data

redis-server --appendonly yes :在容器執行redis-server啟動命令,並開啟redis持久化配置

4,檢視容器 docker ps -a 如下圖

如果沒有正常啟動,輸入docker logs 容器ID 檢視日誌,若提示無許可權,可以在啟動命令中新增--privileged=true,如:

docker run -p 6379:6379 --privileged=true -v $PWD/data:/data  -d redis:latest redis-server --appendonly yes

5,檢視容器啟動日誌

docker logs b3b297dc1fc3

6,訪問redis

docker exec -it b3b297dc1fc3 /bin/bash 

然後輸入 redis-cli

安裝MySQL

1,docker search mysql 如下圖:

找到官方版本

2,docker pull docker.io/mysql 拉取映象,如下圖:

3,啟動:

docker run -p 3306:3306 --name mysql -v /mountData/mysql/conf:/etc/mysql/conf.d -v /mountData/mysql/logs:/logs -v /mountData/mysql/data:/mysql_data -e MYSQL_ROOT_PASSWORD=123456 -d docker.io/mysql

4,docker ps -a 檢視容器,如下圖:

以上是安裝MySQL官方版本的docker映象,是最新的,已經到了8.0  

以前安裝的舊版本如5.7的資料庫使用這個版本可能會出錯,

如連結錯誤,提示caching_sha2_password could not be loaded

解決方法:

進入到容器:docker exec -it 容器ID /bin/bash

進入到MySQL:mysql -uroot -p123456

修改密碼:ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

重新連結就可以了

但是我自己的專案執行的時候提示create connection error jdbc://localhost:3306...

感覺像是連不上資料庫,但是報錯又是報biginteger無法轉換為long,弄半天沒弄好

還是用了阿里5.7的MySQL映象,專案正常執行

阿里的MySQL映象

docker pull registry.cn-hangzhou.aliyuncs.com/acs-sample/mysql:5.7

如下圖:

然後再按照上面的命令run起來就可以了

注意:這裡會有個時間對不上的問題,就是容器與宿主機的時間對不上,可能會導致一些專案出問題

這裡使用共享宿主機的時間來修改這個問題:

新增-v引數 -v /etc/localtime:/etc/localtime:ro,

修改後的啟動命令:

docker run -p 3306:3306 --name mysql -v /mountData/mysql/conf:/etc/mysql/conf.d -v /mountData/mysql/logs:/logs -v /mountData/mysql/data:/mysql_data -v /etc/localtime:/etc/localtime:ro -e MYSQL_ROOT_PASSWORD=123456 -d docker.io/mysql

Mysql only_full_group_by解決:

set GLOBAL sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION ';

再附上不使用docker安裝MySQL的流程:

1. 首先進入本機的原始檔目錄

cd /usr/local/src

2. 使用wget下載官方yum源的rpm包:

wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm

3. 安裝rpm包:

rpm -ivh mysql57-community-release-el7-11.noarch.rpm

4. 再次使用yum來安裝mysql-server:

yum install -y mysql-server

可以看到這次不再提示安裝Mariadb了

5. 安裝完成後,啟動mysqld服務:

systemctl start mysqld

檢視是否成功啟動:

ps aux|grep mysqld

6. 設定mysqld服務開機自啟動:

systemctl enable mysqld

7. 使用初始密碼登入

由於MySQL從5.7開始不允許首次安裝後,使用空密碼進行登入,系統會隨機生成一個密碼以供管理員首次登入使用,這個密碼記錄在/var/log/mysqld.log檔案中,使用下面的命令可以檢視此密碼:

cat /var/log/mysqld.log|grep 'A temporary password'
2017-11-12T13:35:37.013617Z 1 [Note] A temporary password is generated for [email protected]: bkv,dy,)o7Ss

最後一行冒號後面的部分bkv,dy,)o7Ss就是初始密碼。
使用此密碼登入MySQL:

mysql -u root -p

8. 更改預設密碼:

切換資料庫:

use mysql;

修改root密碼:

alter user 'root'@'localhost' identified by 'your_password';

your_password替換成你自己的密碼就可以了,當然,這個密碼是強密碼,要求密碼包含大小寫字母、數字及標點符號,長度應該在6位以上。

如果不想要這個強密碼校驗,修改2個引數即可:

set global validate_password_policy=0;
set global validate_password_length=1;