1、搜索鏡像
docker search mysql
2、拉取鏡像
docker pull mysql
3、查看鏡像
docker images
4、創建目錄
mkdir -p /software/mysql/logs mkdir -p /software/mysql/data mkdir -p /software/mysql/conf
mkdir -p /sofrware/mysql/mysql-files
5、docker運行命令相關參數
–name:容器名,此處命名為mysql -e:配置信息,此處配置mysql的root用戶的登陸密碼 -p:端口映射,此處映射 主機3306端口 到 容器的3306端口 -d:源鏡像名,此處為 mysql -v:主機和容器的目錄映射關系,":"前為主機目錄,之后為容器目錄
不建立目錄映射 docker run -p 3306:3306 --name mysql \ -e MYSQL_ROOT_PASSWORD=123456 \ -d mysql 建立目錄映射
docker run -p 3306:3306 --name mysql \
-v /software/mysql/conf:/etc/mysql \
-v /software/mysql/logs:/var/log/mysql \
-v /software/mysql/data:/var/lib/mysql \
-v /software/mysql/mysql-files:/var/lib/mysql-files \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql
-e MYSQL_ROOT_PASSWORD :設置mysql密碼 -v /home/mysql/:/var/lib/mysql:掛載磁盤實現數據持久化 --lower_case_table_names=1 :忽略大小寫,docker mysql默認區分大小寫的
注:參數順序一定要對,--lower_case_table_names=1要加在鏡像名后面,鏡像名前面是參數,后面是mysql配置,不然會報錯
lower_case_table_names=1 只能在初始化時配置,不然會報
6、使用目錄映射
7、查看運行
docker ps
8、進入容器控制台
docker exec -it mysql bash
docker exec :在運行的容器中執行命令
語法
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
OPTIONS說明:
-d :分離模式: 在后台運行
-i :即使沒有附加也保持STDIN 打開
-t :分配一個偽終端
9、進入數據庫,沒有密碼
mysql -h 127.0.0.1 -u root -p
10、查詢mysql版本
select version();
11、修改用戶名
ALTER user 'root'@'localhost' IDENTIFIED BY 'Test1234567!'
12、查看用戶名、密碼
select host,user,authentication_string from mysql.user;
13、修改訪問
update mysql.user set host='%' where user='root';
14、查看docker 信息
docker inspect mysql
15、創建遠程訪問用戶
創建用戶 create user test@'%' identified by 'Test1234567!'; 授權 grant all privileges on *.* to test@'%' with grant option; 刷新 flush privileges;
報錯
因為mysql8使用的是caching_sha2_password加密規則,最簡單的方法是修改遠程連接用戶的加密規則: ALTER USER 'test'@'%' IDENTIFIED WITH mysql_native_password BY 'Test1234567!';
ALTER USER 'test'@'%' IDENTIFIED BY 'Test1234567!' PASSWORD EXPIRE NEVER;
ALTER USER 'test'@'%' IDENTIFIED WITH mysql_native_password BY 'Test1234567!';
FLUSH PRIVILEGES;
16、成功連接
錯誤:
mysqld: Error on realpath() on '/var/lib/mysql-files' (Error 2 - No such file or director
解決方法:
當指定了外部配置文件與外部存儲路徑時,也需要指定 /var/lib/mysql-files的外部目錄,
所以在主機新建/software/mysql/mysql-files目錄,
在啟動容器時 需要加上
-v /software/mysql/mysql-files:/var/lib/mysql-files \
注:
mysql在linux中區分大小寫
show variables like '%lower_case_table_names%';
值為1,表示是大小寫不敏感,而linux環境的mysql是0.
修改方法:
1. 找到mysql的安裝位置
2. 找到主目錄下的my.ini配置文件
3. 在[mysqld]節點下添加lower-case-table-names=0
4. 重啟mysql服務
docker中修改my.cnf配置文件
1、進入容器
docker exec -it 容器ID /bin/bash
2、進入目錄
cd /etc/mysql
如果不安裝vim在使用vim的時候會報找不到,在修改docker中mysql的配置文件,無法使用vi命令。 apt-get update
或 apt-get install vim
3、修改
vi my.cnf
4、退出容器
如果要退出bash有2種操作:1)Ctrl + d 退出並停止容器;2)Ctrl + p + q 退出並在后台運行容器;
5、重啟容器
docker restart 容器ID
注注注:
# 在此目錄找到nginx容器的配置文件
find ./ -name nginx.conf