返回顶部
首页 > 资讯 > 数据库 >docker mysql8 my.cnf 配置讲解
  • 265
分享到

docker mysql8 my.cnf 配置讲解

mysql数据库java 2023-09-01 14:09:20 265人浏览 泡泡鱼
摘要

[Mysqld] port         = 3306 #basedir        = /var/lib/mysql datadir        = /var/lib/mysql pid-file    = /var/run/m

[Mysqld]
port         = 3306
#basedir        = /var/lib/mysql
datadir        = /var/lib/mysql
pid-file    = /var/run/mysqld/mysqld.pid
Socket        = /var/run/mysqld/mysqld.sock
#secure-file-priv= NULL
secure-file-priv= /var/lib/mysql-files
lower_case_table_names=1
character-set-server=utf8mb4

collation-server=utf8mb4_unicode_ci
max_connections=1500
max_connect_errors=100
default-storage-engine=INNODB
default_authentication_plugin=mysql_native_passWord
wait_timeout    = 1800
interactive_timeout = 1800
#lock_wait_timeout = 3600
#tmp_table_size = 64M
#max_heap_table_size = 64M
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
#log-error    = /var/log/mysql/error.log
# By default we only accept connections from localhost
#bind-address    = 127.0.0.1
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

[mysql]
default-character-set=utf8mb4

[client]
port=3306
default-character-set=utf8mb4

#!includedir /etc/mysql/conf.d/

Docker run

docker run --restart=unless-stopped -d --name mysql -p 3306:3306  -v /data/jettechproduct/jettopro/poc/tools/mysql8.0/conf/my.cnf:/etc/mysql/my.cnf -v /data/jettechproduct/jettopro/poc/tools/mysql8.0/data:/var/lib/mysql -v /data/jettechproduct/jettopro/poc/tools/mysql8.0/mysql-files:/var/lib/mysql-files  -e MYSQL_ROOT_PASSWORD=123456aA harbor.jettech.com/jettechtools/mysql:8.0.28

讲解:

default_authentication_plugin 参数的设定:

原来​​Mysql​​在之前的版本的关于​​password​​的加密方法都是使用的  ​​mysql_native_password​​,

不过到​​MySQL8.0​​的时候换成了​​caching_sha2_password​​,需要我们安装额外的插件,下面我们就来演示一下如何不用装插件的方法来规避这个错误。

 运行环境:​​Centos7.4​​ +​​MySQL 8.0.11​​版本

mysql> show variables like 'default_authentication_plugin';+-------------------------------+-----------------------+| Variable_name                 | Value                 |+-------------------------------+-----------------------+| default_authentication_plugin | caching_sha2_password |+-------------------------------+-----------------------+1 row in set (0.01 sec)mysql> select host,user,plugin from mysql.user;+-----------+------------------+-----------------------+| host      | user             | plugin                |+-----------+------------------+-----------------------+| %         | root             | caching_sha2_password || localhost | mysql.infoschema | mysql_native_password || localhost | mysql.session    | mysql_native_password || localhost | mysql.sys        | mysql_native_password || localhost | root             | caching_sha2_password |+-----------+------------------+-----------------------+5 rows in set (0.00 sec)

  运行环境:​​Centos7.4​​ +​​MySQL 5.7​​版本

mysql> show variables like 'default_authentication_plugin';+-------------------------------+-----------------------+| Variable_name                 | Value                 |+-------------------------------+-----------------------+| default_authentication_plugin | mysql_native_password |+-------------------------------+-----------------------+1 row in set (0.01 sec)mysql> select host,user,plugin from mysql.user;+-----------+-----------+-----------------------+| host      | user      | plugin                |+-----------+-----------+-----------------------+| localhost | root      | mysql_native_password || localhost | mysql.sys | mysql_native_password || %         | root      | mysql_native_password |--------------------- 

可以看到​​MySQL8.0.11​​版本默认的认证方式是​​caching_sha2_password​​,而在​​MySQL5.7​​版本则为​​mysql_native_password​​。若想在​​MySQL8.0​​版本中继续使用旧版本中的认证方式需要在​​my.cnf​​文件中配置并重启,因为此参数不可动态修改。

mysql> set global default_authentication_plugin='mysql_native_password';ERROR 1238 (HY000): Variable 'default_authentication_plugin' is a read only variable
vim my.cnf[mysqld]default_authentication_plugin=mysql_native_password

另一种解决方法:兼容新老版本的认证方式。

ALTER USER 'root'@'localhost' IDENTIFIED BY 'root' PASSWORD EXPIRE NEVER; #修改加密规则 
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root'; #更新一下用户的密码 
FLUSH PRIVILEGES; #刷新权限
--创建新的用户:
create user root@'%' identified WITH mysql_native_password BY 'root';
grant all privileges on *.* to root@'%' with grant option;
flush privileges;
--在MySQL8.0创建用户并授权的语句则不被支持:
mysql> grant all privileges on *.* to root@'%' identified by 'root' with grant option;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL Server version for the right syntax to use near 'identified by 'root' with grant option' at line 1
 

 secure-file-priv:

当我要在 mysql 里导出数据的时候发现报错,报错内容如下

原理解释

  • secure-file-priv 是 mysql 中的一个系统变量,用来控制导入导出数据的操作,比如 LOAD DATA 或 SELECT ... INTO OUTFILE 或 LOAD_FILE()
  • 用 show global variables like 'secure_file%' 查看该变量的设定值,可能有以下 3 种取值
    • 1⃣️ 没有值。也就是这个变量没有作用了
    • 2⃣️ 指向某个路径。也就是导入导出只能用这个路径
    • 3⃣️ NULL。禁止导入导出操作
  • 不同平台的这个系统变量的默认值不一样

解决办法

  • 环境:mysql 8.0.26(用 homebrew 安装),Macbook Pro 2020 Intel Edition

  • 1⃣️ 创建对应文件,~/.my.cnf,用自己习惯的文本编辑器即可,我用的 nano,里面内容如下

[mysqld]secure_file_priv = ''show global variables like 'secure_file%';

var lib mysql-files_Docker启动MySQL 8.0 报错: docker Supplied value : /var/lib/mysql-files

这个问题是在启动容器尝试对容器挂载数据卷的时候出现的, 不挂载数据卷不会有这个问题。

我的数据卷挂载参数如下, 其中报错就是因为缺少第二行, 对my.cnf文件也挂载也就是对在my.cnf中的secure_file_priv=/var/lib/mysql-files 目录页进行挂在就额可以了或者在容器中创建此目录或者和datadir公用目录【secure_file_priv=/var/lib/mysql】

[mysqld]# 设置3306端口port=3306# 设置mysql的安装目录basedir=/usr/local/mysql# 设置mysql数据库的数据的存放目录datadir=/usr/local/mysql/mysqldb# 允许最大连接数max_connections=1000# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统max_connect_errors=100# 服务端使用的字符集默认为UTF8character-set-server=utf8mb4# 创建新表时将使用的默认存储引擎default-storage-engine=INNODB# 默认使用“mysql_native_password”插件认证default_authentication_plugin=mysql_native_password#是否对sql语句大小写敏感,1表示不敏感lower_case_table_names = 1#MySQL连接闲置超过一定时间后(单位:秒)将会被强行关闭#MySQL默认的wait_timeout  值为8个小时, interactive_timeout参数需要同时配置才能生效interactive_timeout = 1800wait_timeout = 1800#Metadata Lock最大时长(秒), 一般用于控制 alter操作的最大时长sine mysql5.6#执行 DML操作时除了增加innodb事务外还增加Metadata Lock,其他alter(DDL)session将阻塞lock_wait_timeout = 3600#内部内存临时表的最大值。#比如大数据量的group by ,order by时可能用到临时表,#超过了这个值将写入磁盘,系统IO压力增大tmp_table_size = 64Mmax_heap_table_size = 64M[mysql]# 设置mysql客户端默认字符集default-character-set=utf8mb4[client]# 设置mysql客户端连接服务端时默认使用的端口port=3306default-character-set=utf8mb4

来源地址:https://blog.csdn.net/Michaelwubo/article/details/128845984

您可能感兴趣的文档:

--结束END--

本文标题: docker mysql8 my.cnf 配置讲解

本文链接: https://lsjlt.com/news/388755.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • docker mysql8 my.cnf 配置讲解
    [mysqld] port         = 3306 #basedir        = /var/lib/mysql datadir        = /var/lib/mysql pid-file    = /var/run/m...
    99+
    2023-09-01
    mysql 数据库 java
  • mysql8.x docker 远程访问配置
    环境情况 mysql 8.x 是通过 docker 方式部署的,启动的 docker-compose.yml 如下: version: "3.2" services: mysql: container_name: ...
    99+
    2020-08-08
    mysql8.x docker 远程访问配置
  • my.cnf常用配置
    自动生成cnf配置文件:http://imysql.com/my-cnf-wizard.html常用配置:[mysql]字段 no-auto-rehash  #开启命令补全[m...
    99+
    2024-04-02
  • my.cnf如何配置
    这篇文章主要为大家展示了“my.cnf如何配置”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“my.cnf如何配置”这篇文章吧。[client] defaul...
    99+
    2024-04-02
  • mysql中my.cnf的详细讲解
    这篇文章主要讲解了“mysql中my.cnf的详细讲解”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql中my.cnf的详细讲解”吧!#*** cli...
    99+
    2024-04-02
  • MySQL配置文件my.cnf优化详解
    MySQL 5.5.13 参数说明: [client] character-set-server = utf8 port    = 3306 socket  ...
    99+
    2022-05-21
    配置文件 mysql
  • Linux下docker安装mysql8并配置远程连接
    目录第一步:下载mysql镜像镜像第二步:启动mysql镜像第三步:查询启动的镜像第四步:进入容器第五步:登录mysql第六步:设置远程访问第七步:navicat链接时报 2059 错误第一步:下载mysql镜...
    99+
    2022-07-06
    docker安装mysql8并远程连接 docker安装mysql8
  • mysql的配置文件my.cnf
    [client]port=3306socket=/u01/svr/run/mysql.sock[mysql]#pid_file=/u01/svr/run/mysqld.pid[mysqld]autocommit=1general_log=o...
    99+
    2023-06-03
  • MySQL之my.cnf配置文件
    之前没有仔细研究过my.cnf文件,今天有时间研究了一下my.cnf中的一些概念,这里简单整理如下,如果有什么问题,还请大家指出。 按照教程安装好MySQL之后,打开etc目录下的my.cnf文件,大概可看到下面这样的参数列表,可能不同版...
    99+
    2023-08-16
    mysql 数据库 服务器
  • mysql8主从配置
    一、一般配置主从(这里主是m3300,从是3301、3302) 配置m3301 从mysql8里拿出这两个文件到m3301 配置my.ini 初始化mysql8 mysqld --initialize-insecure; 安装服务...
    99+
    2015-10-09
    mysql8主从配置
  • MySQL 配置文件 my.cnf / my.ini 区别解析
    充分理解 mysql 配置文件中各个变量的意义对我们有针对性的优化 MySQL 数据库性能有非常大的意义。我们需要根据不同的数据量级,不同的生产环境情况对 MySQL 配置文件进行优化。 一、配置文件my.ini或my....
    99+
    2022-11-25
    mysqlmy.cnfmy.ini区别 mysql配置文件my.cnf mysql配置文件my.ini
  • MySQL之my.cnf配置文件图文详解
    目录引言问题1.mysql.server,mysqld,mysqld_safe的区别mysql.servermysql_safe问题2.mysql的三种启动方式:问题3.socket...
    99+
    2024-04-02
  • mysql8.x docker远程访问配置的示例分析
    这篇文章主要介绍mysql8.x docker远程访问配置的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!环境情况mysql 8.x 是通过 docker 方式部署的,启动的 docker-comp...
    99+
    2023-06-22
  • Mysql配置my.cnf 参数说明
     ...
    99+
    2016-11-27
    Mysql配置my.cnf 参数说明
  • my.cnf配置文件在什么位置
    my.cnf配置文件在什么位置?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一般linux上都放在 /etc/my.cnf &...
    99+
    2024-04-02
  • Linux下docker怎么安装mysql8并配置远程连接
    这篇文章主要讲解了“Linux下docker怎么安装mysql8并配置远程连接”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux下docker怎么安装mysql8并配置远程连接”吧!第...
    99+
    2023-07-02
  • redis配置讲解
    前面已将介绍了redis的安装,接下来对redis的配置参数进行简单的介绍。1.Redis通用配置daemonize no  # 默认情况下,redis并不是以daemon形式来运行的。通过dae...
    99+
    2024-04-02
  • mysql8.xdocker远程访问配置详解
    目录环境情况 遇到的错误 解决方法 1. 登录 mysql docker 内部 2. 设置root密码 3. 设置 root 远程访问权限 4. 设置普通用户 myuser 的远程访...
    99+
    2024-04-02
  • my.cnf配置文件的必要配置有哪些
    小编给大家分享一下my.cnf配置文件的必要配置有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! ...
    99+
    2024-04-02
  • MySQL中怎么配置 my.cnf参数
    本篇文章给大家分享的是有关MySQL中怎么配置 my.cnf参数,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。# 以下选项会被MySQL客户端...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作