记录一次docker安装mysql8.3
配置文件 /data/mysql8-data/conf/my.cnf
[mysql] # 设置mysql控制台默认字符集 default-character-set=utf8mb4 # 需要和[mysqld]中的保持一致,不然本地连接跳过权限连接有问题 socket=/var/lib/mysql/mysqld.sock [client] # 设置mysql客户端 默认字符集(如 mysql、mysqldump、mysqladmin等) default-character-set=utf8mb4 [mysqld] bind-address=0.0.0.0 #设置3306端⼝ port=3306 #设置mysql时区 或 default-time-zone='+08:00' 表示东八区 default-time-zone='Asia/Shanghai' #默认认证插件更改为 mysql_native_password(可以兼容5.7版) default_authentication_plugin=mysql_native_password #数据提交⼤⼩ max_allowed_packet=30M #设置mysql的安装⽬录(win系统) #basedir=D:\mysql5.7 #设置mysql数据库的数据的存放⽬录 datadir=/var/lib/mysql socket=/var/lib/mysql/mysqld.sock #允许最⼤连接数 max_connections=200 #服务端使⽤的字符集默认为8⽐特编码的latin1字符集 character-set-server=utf8mb4 #设置默认排序规则 collation-server=utf8mb4_general_ci #创建新表时将使⽤的默认存储引擎 default-storage-engine=INNODB #开启查询缓存 explicit_defaults_for_timestamp=true #sqlmode模式 # mysql5.7 #sql_mode=STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION # mysql8 sql_mode=STRICT_TRANS_TABLES,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION #跳过权限验证 ⾸次启动服务或维护时候打开 mysql8会连网络一起跳过,所以维护时候在本地只能用 mysql -u root -p 不要指定host #skip-grant-tables
启动脚本
docker run --restart=always --name mysql8-dev \ -v /data/mysql8-data/conf:/etc/mysql \ -v /data/mysql8-data/data:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORD=123456 -d \ -p 3306:3306 mysql:8.3 \ --defaults-file=/etc/mysql/my.cnf
用户管理
# 创建可远程访问用户 CREATE USER 'myuser'@'%' IDENTIFIED WITH mysql_native_password BY '123456'; # 设置权限 GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%'; FLUSH PRIVILEGES; # 修改某个用户密码加密模式 ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456'; FLUSH PRIVILEGES;
其他
#修改数据库排序模式 ALTER DATABASE your_database_name COLLATE = utf8mb4_general_ci;