mysql容器数据文件被隐藏_【MySQL】关于容器化MySQL8.x数据后台导入问题

# cat /opt/mysqlconfig/mysqld.cnf

#####################################################

[mysqld]

pid-file                         = /var/run/mysqld/mysqld.pid

socket                          = /var/run/mysqld/mysqld.sock

datadir                          = /var/lib/mysql

symbolic-links                       = 0

max_connections                  = 2000

user                                       = mysql

skip_name_resolve

skip-host-cache

skip-log-bin

character-set-client-handshake  = FALSE

lower_case_table_names               = 1

character-set-server                       = utf8

collation-server                               = utf8_general_ci

init_connect                                    = "SET NAMES 'utf8'"

default_authentication_plugin  = mysql_native_password

#general_log      = on

#general_log_file  = /var/lib/mysql/general.log

#log_timestamps    = SYSTEM

require_secure_transport = ON

ssl-ca                   = /var/lib/mysql/ca.pem

ssl-cert                = /var/lib/mysql/server-cert.pem

ssl-key                 = /var/lib/mysql/server-key.pem

[mysql]

default-character-set          = utf8

[client]

default-character-set          = utf8

######################################################

c1a720a06b31?utm_campaign=hugo

# cat mysql8.x_init.sh

#########################################

#!/bin/bash

mysql_ver="8.0"

mysql_datadir="/opt/mysqldata"

mysql_root_pwd="MySQL@123"

registry_addr=""

docker run -itd  \

--name mysql \

-p 3306:3306 \

-e UMASK=0600 \

-e UMASK_DIR=0700 \

-e MYSQL_HISTFILE=/dev/null \

-v ${mysql_datadir}:/var/lib/mysql \

-v /opt/mysqlconfig/mysqld.cnf:/etc/mysql/conf.d//mysqld.cnf \

-e MYSQL_ROOT_PASSWORD="${mysql_root_pwd}" \

mysql:${mysql_ver}

sleep 30

if ss -tan | grep -w "3306" > /dev/null 2>&1; then

docker stop mysql

docker rm  mysql

echo "Mysql init successfuly!"

else

echo "Mysql init failed!"

fi

###############################################

c1a720a06b31?utm_campaign=hugo

注意:对MysQL8.x,初始化MysQL数据时,带上  lower_case_table_names =1或者0 (1表示库表大小写不敏感,0表示敏感),意义重大

如果不加这个配置项初始化,默认库表大小写不敏感。

因为一旦初始化后,无法通过后续修改配置文件更改大小写敏感,否则会导致数据库启动失败,所以在初始化之前决定好是否要库表区分大小写!

# cat /etc/systemd/system/mysqld.service

###############################################

[Unit]

Description=MySQL Server

After=network-online.target docker.service

Requires=docker.service

[Service]

Type=simple

ExecStartPre=-/usr/bin/docker rm -f mysql

ExecStart=/usr/bin/docker run \

--name mysql \

-p 33306:33306 \

-e UMASK=0600 \

-e UMASK_DIR=0700 \

-e MYSQL_HISTFILE=/dev/null \

-v /opt/mysqldata:/var/lib/mysql \

-v /opt/mysqlconfig/mysqld.cnf:/etc/mysql/conf.d//mysqld.cnf \

-v /opt/sql:/opt/sql \

-v /etc/localtime:/etc/localtime \

--security-opt seccomp=unconfined \

mysql:8.0sec

ExecStop=/usr/bin/docker stop mysql

LimitNOFILE=65535

Restart=on-failure

StartLimitBurst=3

StartLimitInterval=60s

[Install]

WantedBy=multi-user.target

############################################################

# systemctl daemon-reload

# systemctl start mysqld

# systemctl enable mysqld

# systemctl status mysqld

c1a720a06b31?utm_campaign=hugo

目录挂载  -v /opt/sql:/opt/sql   用于解决一个什么问题呢?

当你经常有大型sql 需要数据库后台执行,搞一个  sql挂载目录,就不用docker cp  大型sql 进容器了

直接拷贝到宿主机 /opt/sql , 就容器中 /opt/sql  就可以执行导入了!

# cp  X.sql  /opt/sql

# docker exec  -it  mysql  bash

# mysql  -u  user  -p"password"   -D  database   

或者

#  docker exec  -it  mysql   mysql  -u  user   -p"password"  -D  database   

或者

# docker exec  -it  mysql  bash

# cd  /opt/sql

# mysql -u user  -p"password"

>  use  database;

>  source  X.sql

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值