1.docker安裝mysql5.7,請點擊此鏈接
2.docker安裝mysql8并掛載數據卷
docker pull mysql:8.0
docker run --name mysql8 -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:8.0
docker run --name mysql8 -e MYSQL_ROOT_PASSWORD=123456 -v /mqq/mysql8/datadir:/var/lib/mysql -d mysql:8.0
這里,-v /data/mysql8/datadir:/var/lib/mysql 將主機上的/data/mysql8/datadir目錄掛載到容器內的/var/lib/mysql,用于持久化數據。
請確保替換命令中的路徑和密碼為您自己的實際路徑和密碼。
3.docker安裝mysql8并掛載數據卷日志配置文件
docker run -p 3307:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:8.0.20
docker ps
mkdir -p /mqq/mysql8.0.20/
docker cp mysql:/etc/mysql /mqq/mysql8.0.20/
docker rm -f mysql
cd /mqq/mysql8.0.20/mysql/conf.d
cat > my.cnf << EOF
[mysqld]
user=mysql
character-set-server=utf8
default_authentication_plugin=mysql_native_password
secure_file_priv=/var/lib/mysql
expire_logs_days=7
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
max_connections=1000
collation-server=utf8_general_ci[client]
default-character-set=utf8[mysql]EOF
docker run \
-p 3336:3306 \
--name mysql8 \
--privileged=true \
--restart unless-stopped \
-v /mqq/mysql8.0.20/mysql:/etc/mysql \
-v /mqq/mysql8.0.20/logs:/logs \
-v /mqq/mysql8.0.20/data:/var/lib/mysql \
-v /etc/localtime:/etc/localtime \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:8.0.20
-p 端口映射 【后續鏈接數據庫的時候用3336鏈接不用3306】
–name mysql8 名稱是mysql8
–privileged=true 掛載文件權限設置
–restart unless-stopped 設置 開機后自動重啟容器
-v /mqq/mysql8.0.20/mysql:/etc/mysql \ 掛載配置文件【路徑是上面創建的掛載路徑】
-v /mqq/mysql8.0.20/logs:/logs \ 掛載日志【路徑是上面創建的掛載路徑】
-v /mqq/mysql8.0.20/data:/var/lib/mysql \ 掛載數據文件 持久化到主機【路徑是上面創建的掛載路徑】
-v /etc/localtime:/etc/localtime 容器時間與宿主機同步
-e MYSQL_ROOT_PASSWORD=123456 設置密碼
-d mysql:8.0.20 后臺啟動,mysql
docker ps
docker exec -it mysql8 bash #進入mysql容器
mysql -u root -p123456
grant all PRIVILEGES on *.* to root@'%' WITH GRANT OPTION; #為root分配權限,以便可以遠程連接
use mysql
update user set host='%' where user='root';
#由于Mysql5.6以上的版本修改了Password算法,這里需要更新密碼算法,便于使用Navicat連接
grant all PRIVILEGES on *.* to root@'%' WITH GRANT OPTION;
ALTER user 'root'@'%' IDENTIFIED BY '123456' PASSWORD EXPIRE NEVER;
ALTER user 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
FLUSH PRIVILEGES;
-- 創建新數據庫 (替換your_database_name為你的數據庫名)
CREATE DATABASE school;-- 選擇數據庫
USE school;-- 創建一個名為 class的表,包含三列:id, name, age
CREATE TABLE Class1Grade1 (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(50) NOT NULL,age INT NOT NULL
);-- 插入數據
INSERT INTO Class1Grade1 (name, age) VALUES ('Alice', 6);
INSERT INTO Class1Grade1 (name, age) VALUES ('Bob', 6);
INSERT INTO Class1Grade1 (name, age) VALUES ('Charlie', 7);
INSERT INTO Class1Grade1 (name, age) VALUES ('馬強', 7);
INSERT INTO Class1Grade1 (name, age) VALUES ("劉洪", 7);