Docker安装MySql遇到的问题解决

2024-03-11 0 685
目录
  • 一、mysql查询中文乱码问题
    • 1. 进入mysql中进行查看数据库字符集
    • 2. 修改my.cnf 中的配置
    • 3. 重启mysql容器,使得容器重新加载配置文件
    • 4. 测试结果
  • 二、主从同步中遇到的问题
    • 2.1 Slave_IO_Running:Connecting 的解决方案
      • 1. 确定宿主机防火墙开放mysql的映射端口
      • 2. 检查配置文件中 server_id 是否唯一
      • 3. 检查的同步状态
    • 2.2 authentication plugin 'caching_sha2_password' cannot be loaded

    一、mysql查询中文乱码问题

    由于字符集设置不正确导致。

    Docker安装MySql遇到的问题解决

    解决方案:

    1. 进入mysql中进行查看数据库字符集

    show variables like \’character%\’;

    Docker安装MySql遇到的问题解决

    character_set_client

    character_set_connection

    连接到 MySQL 服务器的客户端使用的字符集

    character_set_database当前数据库的默认字符集character_set_results查询结果返回给客户端时使用的字符集character_set_serverMySQL 服务器使用的默认字符集

    返回的字符集中,character_set_database、character_set_server等都为latin1字符集,所以会出现乱码。

    2. 修改my.cnf 中的配置

    我的mysql是挂载在下 /app/mysql-master/conf, 所以我只需要到该路径下修改。

    vim /app/mysql-master/conf/my.cnf
    [client]
    # 设置客户端的默认字符集为 utf8
    default-character-set = utf8

    [mysqld]
    # 设置服务器的排序规则为 utf8_general_ci
    collation-server = utf8_general_ci

    # 设置服务器的默认字符集为 utf8
    character-set-server = utf8

    Docker安装MySql遇到的问题解决

    3. 重启mysql容器,使得容器重新加载配置文件

    docker restart mysql-master

    4. 测试结果

    Docker安装MySql遇到的问题解决

    Docker安装MySql遇到的问题解决

    二、主从同步中遇到的问题

    在同步测试过程中发现从机并没有同步主机的数据,并且查看从机的状态

    # \\G 可以将横向的结果集表格转换成纵向展示。
    # slave status的字段比较多,纵向展示比友好
    show slave status \\G;

    如果 Slave_IO_Running 和Slave_SQL_Running 不为 Yes。

    2.1 Slave_IO_Running:Connecting 的解决方案

    1. 确定宿主机防火墙开放mysql的映射端口

    如果不是生产环境,可以直接简单粗暴先暂时关闭防火墙进行排错。

    # 查看防火墙状态
    systemctl status firewalld

    # 暂时关闭防火墙
    systemctl stop firewalld

    # 永久关闭防火墙
    systemctl disable firewalld

    2. 检查配置文件中 server_id 是否唯一

    Docker安装MySql遇到的问题解决

    如果修改了配置文件需要重启容器使得生效,

    docker restart mysql-master

    ps:主机和从机都查看一遍

    3. 检查的同步状态

    3.1 查看主服务器当前的二进制日志状态

    show master status;

    3.2 进入从机中设置同步配置

    如果已经启动和同步,需要先关闭同步

    stop slave;
    — 格式:
    — change master to master_host=\’宿主机ip\’,master_user=\’主数据库配置的主从复制用户名\’,master_password=\’主数据库配置的主从复制用户密码\’,master_port=宿主机主数据库端口,master_log_file=\’主数据库主从同步状态的文件名File\’,master_log_pos=主数据库主从同步状态的Position,master_connect_retry=连接失败重试时间间隔(秒);

    change master to master_host=\’192.168.xxx.xxx\’,master_user=\’slave\’,master_password=\’123456\’,master_port=3307,master_log_file=\’mall-mysql-bin.000001\’,master_log_pos=769,master_connect_retry=30;
    — 配置完成后在进行启动同步
    start slave;

    ps:根据主机配置进行设置。

    最后查看主机中的主从复制的状态

    # \\G 可以将横向的结果集表格转换成纵向展示。
    # slave status的字段比较多,纵向展示比友好
    show slave status \\G;

    Docker安装MySql遇到的问题解决

    ps:如果同步不成功,可以在这里查看日志。

    2.2 authentication plugin 'caching_sha2_password' cannot be loaded

    原因主要是由于MySQL 8.0版本引入了新的默认身份验证插件caching_sha2_password,而一些旧的MySQL客户端或库可能不支持这个插件,导致连接问题。解决方案 ↓↓↓↓↓↓

    1. 可以查看user中的用户数据

    use mysql;
    select host,user,plugin from user;

    2. 所以需要修改认证插件统一为mysql_native_password

    ALTER USER \’root\’@\’%\’ IDENTIFIED WITH mysql_native_password BY \’123456\’;

    ALTER USER \’slave\’@\’%\’ IDENTIFIED WITH mysql_native_password BY \’123456\’;

    3. 查看是否修改成功

    Docker安装MySql遇到的问题解决

    到此这篇关于Docker安装MySql遇到的问题解决的文章就介绍到这了,更多相关Docker安装MySql内容请搜索悠久资源网以前的文章或继续浏览下面的相关文章希望大家以后多多支持悠久资源网!

    收藏 (0) 打赏

    感谢您的支持,我会继续努力的!

    打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
    点赞 (0)

    悠久资源 Linux服务器 Docker安装MySql遇到的问题解决 https://www.u-9.cn/server/linux/183751.html

    常见问题

    相关文章

    发表评论
    暂无评论
    官方客服团队

    为您解决烦忧 - 24小时在线 专业服务