当前位置:   article > 正文

linux上搭建mysql集群_linux安装mysql集群

linux安装mysql集群

MySQL Cluster

mysql-proxy

sharding-proxy

mysql集群插件 管理工具

有代理节点的存在 没有代码侵入

连接的数据源是 代理节点 通过代理节点自动分配

行为模式,互为主从,读写分离

1.mysql数据同步原理

要搭建mysql集群,首先要知道mysql数据的同步原理:

  1. 更新数据之前,主服务器在二进制日志(Binary log)记录这些改变,存储引擎提交事务。
  2. 存储引擎提交事务给从服务器的I/O线程,将从主服务器的二进制日志(Binary log)中读取事件,并写入中继日志(Relay log)
  3. SQL从线程处理最后一步,将从中继日志读取事件,并重放其中的事件(例如,插入名称是张三的数据,SQL语言结构是,insert语法结构的类型,将SQL语言转换成具体的汉字张三),这样从服务器和主服务器的数据一致。

温馨提示:理论虽有点枯燥,但是对于案例搭建很有帮助。

复制类型

  1. 基于语句的复制。在主服务器上执行的sql语句,在从服务器上执行同样的语句,mysql默认采用基于语句的复制类型(上图,就是基于语句的复制原理)
  2. 基于行的复制。把改变的内容复制过去,而不是把命令在从服务器上执行一遍
  3. 混合类型的复制。默认采用基于语句的复制,一旦发现基于语句无法精确复制时,就会采用基于行的复制

2.关闭防火墙和selinux

查看当前服务器的mysql版本:mysql --version

查看防火墙运行状态:systemctl status firewalld.service

systemctl stop firewalld //关闭防火墙

systemctl disable firewalld //将防火墙设置开机不自启

#关闭selinux服务

vi /etc/selinux/config //进入到此目录下将selinux的状态设置为disabled 修改为 selinux=disabled

3.各服务器进行 时间同步(chrony

  1. 在两台服务器上安装chrony软件包。您可以使用以下命令在服务器上安装:

    1. sudo yum install chrony
  2. 在其中一台服务器上编辑chrony配置文件。您可以使用以下命令打开配置文件:

    sudo nano /etc/chrony.conf
    
  3. 在配置文件中找到server行,并添加另一台服务器的IP地址或主机名。例如,如果第二台服务器的IP地址是192.168.1.2,则添加以下行:

    1. server 192.168.1.2
  4. 保存并关闭配置文件。

  5. 在两台服务器上启动chrony服务。您可以使用以下命令启动服务:

    1. sudo systemctl start chronyd
  6. 确保chrony服务在服务器启动时自动启动。您可以使用以下命令启用自动启动:

    1. sudo systemctl enable chronyd
  7. 等待一段时间,chrony将自动同步服务器的时间。

请注意,您需要在两台服务器上执行以上步骤,以便它们相互同步时间。

4.配置mysql主服务器

① 在my.cnf文件中修改下面内容

vim /etc/my.cnf

server_id=11

log_bin=master-bin

log-slave-updates=true


②重启mysql服务

systemctl restart mysqld

③ 登录mysql,为从服务器授权

  1. mysql 5 授权
  2. mysql> grant replication slave on *.* to 'root'@'8.130.114.30' identified by 'Root,13579';
  3. Query OK, 0 rows affected (0.00 sec)
  1. mysql 8 授权
  2. 为从服务器 数据库创建账号
  3. mysql> create user 'repl'@'47.97.167.208' identified with mysql_native_password by 'Root,135';
  4. Query OK, 0 rows affected (0.04 sec)
  5. 赋予权限
  6. mysql> grant replication slave on *.* to 'repl'@'47.97.167.208';
  7. Query OK, 0 rows affected (0.01 sec)
  8. 刷新授权
  9. mysql> flush privileges;
  10. Query OK, 0 rows affected (0.00 sec)
  11. 查看是否赋予权限
  12. mysql> show grants for 'repl'@'47.97.167.208';
  13. +----------------------------------------------------------+
  14. | Grants for repl@47.97.167.208 |
  15. +----------------------------------------------------------+
  16. | GRANT REPLICATION SLAVE ON *.* TO `repl`@`47.97.167.208` |
  17. +----------------------------------------------------------+
  18. 1 row in set (0.00 sec)

刷新权限

  1. mysql> flush privileges;
  2. Query OK, 0 rows affected (0.00 sec)

查看主服务器状态

  1. mysql> SHOW MASTER STATUS;
  2. +------------------+----------+--------------+------------------+
  3. | File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
  4. +------------------+----------+--------------+------------------+
  5. | mysql-bin.000007 | 569 | | |
  6. +------------------+----------+--------------+------------------+
  7. 1 row in set (0.00 sec)

5.配置mysql从服务器

vim /etc/my.cnf

server_id=22

relay-log=relay-log-bin

relay-log-index=slave-relay-bin.index

https://s2.51cto.com/images/blog/202211/17100222_6375962ea7bb127322.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=/format,webp/resize,m_fixed,w_1184

重启mysql服务

systemctl restart mysqld

③登录mysql,配置同步

  1. mysql> CHANGE MASTER TO MASTER_HOST='47.97.167.208',MASTER_PORT=3306,MASTER_USER='root',MASTER_PASSWORD='Root,13579',MASTER_LOG_FILE='mysql-bin.000011',MASTER_LOG_POS=570;
  2. Query OK, 0 rows affected, 9 warnings (0.00 sec)

//停止IO线程

  1. STOP REPLICA IO_THREAD FOR CHANNEL '';
  2. STOP SLAVE IO_THREAD;

https://s2.51cto.com/images/blog/202211/17100222_6375962eec01577387.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=/format,webp/resize,m_fixed,w_1184

④ 启动同步

  1. mysql> start slave;
  2. Query OK, 0 rows affected, 1 warning (0.01 sec)

⑤ 查看slave状态

以下俩属性为yes 则配置成功

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

  1. mysql> show slave status \\G;
  2. *************************** 1. row ***************************
  3. Slave_IO_State: Waiting for source to send event
  4. Master_Host: 47.97.167.208
  5. Master_User: root
  6. Master_Port: 3306
  7. Connect_Retry: 60
  8. Master_Log_File: mysql-bin.000011
  9. Read_Master_Log_Pos: 570
  10. Relay_Log_File: relay-log-bin.000002
  11. Relay_Log_Pos: 307
  12. Relay_Master_Log_File: mysql-bin.000011
  13. Slave_IO_Running: Yes
  14. Slave_SQL_Running: Yes
  15. Replicate_Do_DB:
  16. Replicate_Ignore_DB:
  17. Replicate_Do_Table:
  18. Replicate_Ignore_Table:
  19. Replicate_Wild_Do_Table:
  20. Replicate_Wild_Ignore_Table:
  21. Last_Errno: 0
  22. Last_Error:
  23. Skip_Counter: 0
  24. Exec_Master_Log_Pos: 570
  25. Relay_Log_Space: 515
  26. Until_Condition: None
  27. Until_Log_File:
  28. Until_Log_Pos: 0
  29. Master_SSL_Allowed: No
  30. Master_SSL_CA_File:
  31. Master_SSL_CA_Path:
  32. Master_SSL_Cert:
  33. Master_SSL_Cipher:
  34. Master_SSL_Key:
  35. Seconds_Behind_Master: 0
  36. Master_SSL_Verify_Server_Cert: No
  37. Last_IO_Errno: 0
  38. Last_IO_Error:
  39. Last_SQL_Errno: 0
  40. Last_SQL_Error:
  41. Replicate_Ignore_Server_Ids:
  42. Master_Server_Id: 11
  43. Master_UUID:
  44. Master_Info_File: mysql.slave_master_info
  45. SQL_Delay: 0
  46. SQL_Remaining_Delay: NULL
  47. Slave_SQL_Running_State: Replica has read all relay log; waiting for more updates
  48. Master_Retry_Count: 86400
  49. Master_Bind:
  50. Last_IO_Error_Timestamp:
  51. Last_SQL_Error_Timestamp:
  52. Master_SSL_Crl:
  53. Master_SSL_Crlpath:
  54. Retrieved_Gtid_Set:
  55. Executed_Gtid_Set:
  56. Auto_Position: 0
  57. Replicate_Rewrite_DB:
  58. Channel_Name:
  59. Master_TLS_Version:
  60. Master_public_key_path:
  61. Get_master_public_key: 0
  62. Network_Namespace:
  63. 1 row in set, 1 warning (0.00 sec)
  64. ERROR:
  65. No query specified

6.结果验证

①在主、从服务器上登录mysql

mysql -u root -p

②在主服务器上新建数据库名称为 “对面的女孩看过来”

  1. mysql> show databases;
  2. +--------------------+
  3. | Database |
  4. +--------------------+
  5. | information_schema |
  6. | 5645f6ds |
  7. | mysql |
  8. | performance_schema |
  9. +--------------------+
  10. 4 rows in set (0.00 sec)
  11. mysql> create database 对面的女孩看过来;
  12. Query OK, 1 row affected (0.01 sec)

③在两台从服务器上查看数据库

执行新建数据库,对面的美女看过来命令,显示如下图:

  1. 主服务器查询
  2. mysql> show databases;
  3. +--------------------------+
  4. | Database |
  5. +--------------------------+
  6. | information_schema |
  7. | 5645f6ds |
  8. | 对面的女孩看过来 |
  9. | mysql |
  10. | performance_schema |
  11. +--------------------------+
  12. 5 rows in set (0.00 sec)
  1. 从服务器查询
  2. 创建数据前 数据库情况
  3. mysql> show databases;
  4. +--------------------+
  5. | Database |
  6. +--------------------+
  7. | information_schema |
  8. | mysql |
  9. | performance_schema |
  10. | sys |
  11. +--------------------+
  12. 4 rows in set (0.00 sec)
  13. 创建数据后 数据库情况
  14. mysql> show databases;
  15. +--------------------------+
  16. | Database |
  17. +--------------------------+
  18. | information_schema |
  19. | mysql |
  20. | performance_schema |
  21. | sys |
  22. | 对面的女孩看过来 |
  23. +--------------------------+
  24. 5 rows in set (0.00 sec)
  • 查看当前的MySQL服务器ID

    1. mysql> SHOW VARIABLES LIKE 'server_id';
    2. +---------------+-------+
    3. | Variable_name | Value |
    4. +---------------+-------+
    5. | server_id | 1 |
    6. +---------------+-------+
    7. 1 row in set (0.00 sec)
  • 错误问题

    1. 问题一
    2. mysql> start slave;
    3. ERROR 1872 (HY000): Replica failed to initialize applier metadata structure from the repository
    1. 问题二
    2. Got fatal error 1236 from source when reading data from binary log: 'Could not find first log file name in binary log index file'

    解决方案:

    1. 停止从服务器的复制进程:

      1. STOP SLAVE;
    2. 清除从服务器的复制进程状态:

      1. RESET SLAVE;
    3. 重新初始化从服务器的复制进程:

      1. CHANGE MASTER TO MASTER_HOST='主服务器IP地址', MASTER_USER='复制用户', MASTER_PASSWORD='复制用户密码';

      请确保将上述命令中的主服务器IP地址替换为实际的主服务器的IP地址,并将复制用户复制用户密码替换为实际用于复制的用户和密码。

    4. 启动从服务器的复制进程:

      START SLAVE;
      
    5. 登录远程服务器 验证连通性

      1. mysql -h 8.130.114.30 -u repl -p
      2. mysql -h 47.97.167.208 -u root -p
      3. mysqladmin -u repl -p flush-hosts

linux7安装MySQL5.6.51

查看本地有没有安装mariadb ,有的话删除

[root@localhost ~]# rpm -qa |grep mariadb

[root@localhost ~]# rpm -e --nodeps 软件名

查看本地有没有安装Mysql

[root@localhost ~]# rpm -qa |grep mysql

[root@localhost ~]#  rpm -e --nodeps 软件名

查找本地有没有Mysql文件

[root@localhost ~]# find / -name mysql

[root@localhost ~]# whereis mysql

[root@localhost ~]# rm -rf  #删除

linux中mysql5.6安装以及配置

  1. 在linux上下载 wget <https://downloads.mysql.com/archives/get/p/23/file/mysql-5.6.51-linux-glibc2.12-x86_64.tar.gz>

  2. 解压 tar -zxvf mysql-5.6.45-linux-glibc2.12-x86_64.tar.gz

  3. 更改解压后的名为"mysql" 并移动该文件到/usr/local下

    mv mysql-5.6.51-linux-glibc2.12-x86_64 mysql5.6 mv mysql-5.6.45-linux-glibc2.12-x86_64 /usr/local/mysq

     4.配置mysql

  1. useradd -s /sbin/nologin mysql # 创建mysql用户
  2. mkdir -p /data/mysql # 创建mysql数据库文件
  3. chown -R mysql:mysql /data/mysql # 修改权限
  4. cd /usr/local/mysql
  5. ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql # 初始化配置
  6. (初始化配置报错:[root@db-master01 mysql5.6]# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql
  7. FATAL ERROR: please install the following Perl modules before executing ./scripts/mysql_install_db:
  8. Data::Dumper)
  9. (解决方案:需要安装 Perl 模块 Data::Dumper
  10. 1. 检查系统中是否已经安装了 Perl。您可以执行命令来检查:
  11. perl -v
  12. 2. 如果 Perl 没有安装,请通过包管理器安装 Perl。例如,在使用 yum 包管理器的 CentOS 上,您可以执行以下命令安装 Perl:
  13. sudo yum install perl
  14. 3.需要先安装 cpan 命令。如果您使用的是基于 Red Hat 或 CentOS 的系统,可以使用以下命令安装 perl-CPAN 包:
  15. sudo yum install perl-CPAN
  16. 4.安装 Data::Dumper 模块。您可以使用 CPAN 或者包管理器来安装 Data::Dumper 模块。使用 CPAN 安装的步骤如下:
  17. 执行以下命令进入 CPAN Shell:
  18. sudo cpan
  19. 在 CPAN Shell 中执行以下命令来安装 Data::Dumper 模块:
  20. sudo install Data::Dumper
  21. 5. 安装完成后,退出 CPAN Shell:
  22. quit
  23. 再次尝试运行 ./scripts/mysql_install_db 脚本。)
  24. cp support-files/my-default.cnf /etc/my.cnf # 复制配置文件
  25. vim /etc/my.cnf # 修改配置文件,如下
  26. [mysqld]
  27. port=3306
  28. user=mysql
  29. basedir=/usr/local/mysql
  30. datadir=/data/mysql
  31. socket=/tmp/mysql.sock
  32. log-error=/data/mysql/mysql.err
  33. pid-file=/data/mysql/mysql.pid
  34. #character config
  35. character_set_server=utf8mb4
  36. symbolic-links=0
  37. explicit_defaults_for_timestamp=true
  1. cp support-files/mysql.server /etc/init.d/mysqld # 复制启动脚本
  2. chmod 755 /etc/init.d/mysqld # 修改权限
  3. vim /etc/init.d/mysqld # 修改启动脚本,如下图
  4. basedir=
  5. datadir=/data/mysql

 5. 配置开机启动,并启动mysql

  1. chkconfig --add mysqld
  2. chkconfig mysqld on
  3. service mysqld start

 6. 配置环境变量

  1. vim /etc/profile
  2. export PATH=$PATH:/usr/local/mysql/bin # 在文件末尾添加
  3. source /etc/profile # 生效

7、登录mysql,设置root密码

  1. # 登入mysql
  2. /usr/local/mysql/bin/mysql -u root
  3. # 设置mysql可以远程访问
  4. GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
  5. # 修改root用户密码为1234
  6. set password for 'root'@'%'=password('root123');
  7. # 刷新访问权限
  8. flush privileges;

linux7安装MySQL8.0.33

进入官网下载对应的版本

MySQL :: Download MySQL Community Server

直接复制此链接即可

mysql5.6.51下载地址

MySQL :: Download MySQL Community Server (Archived Versions)

查看操作系统是ARM还是X86,下载对应架构。

[root@k8s-master02 log]# uname -m

x86_64

查看本地有没有安装mariadb ,有的话删除

[root@localhost ~]# rpm -qa |grep mariadb

[root@localhost ~]# rpm -e --nodeps 软件名

查看本地有没有安装Mysql

[root@localhost ~]# rpm -qa |grep mysql

[root@localhost ~]#  rpm -e --nodeps 软件名

查找本地有没有Mysql文件

[root@localhost ~]# find / -name mysql

[root@localhost ~]# whereis mysql

[root@localhost ~]# rm -rf  #删除

确保环境准备无误

[root@localhost ~]# rpm -qa |grep mariadb

[root@localhost ~]# find / -name mysql

[root@localhost ~]# rpm -qa |grep mysql

环境准备没问题开始上传Mysql安装包安装(rz/xftp)

[root@localhost ~]# ls

mysql-8.0.33-1.el7.x86_64.rpm-bundle.tar

创建一个mysql目录存放解压出来的安装包

[root@localhost ~]# mkdir mysql

[root@localhost ~]# tar -xf mysql-8.0.33-1.el7.x86_64.rpm-bundle.tar -C mysql

[root@localhost ~]# cd mysql

[root@localhost mysql]# ls

mysql-community-client-8.0.33-1.el7.x86_64.rpm

mysql-community-client-plugins-8.0.33-1.el7.x86_64.rpm

mysql-community-common-8.0.33-1.el7.x86_64.rpm

mysql-community-debuginfo-8.0.33-1.el7.x86_64.rpm

mysql-community-devel-8.0.33-1.el7.x86_64.rpm

mysql-community-embedded-compat-8.0.33-1.el7.x86_64.rpm

mysql-community-icu-data-files-8.0.33-1.el7.x86_64.rpm

mysql-community-libs-8.0.33-1.el7.x86_64.rpm

mysql-community-libs-compat-8.0.33-1.el7.x86_64.rpm

mysql-community-server-8.0.33-1.el7.x86_64.rpm

mysql-community-server-debug-8.0.33-1.el7.x86_64.rpm

mysql-community-test-8.0.33-1.el7.x86_64.rpm

开始安装依赖按照顺序安装否则报错

rpm -ivh mysql-community-common-8.0.33-1.el7.x86_64.rpm

rpm -ivh mysql-community-client-plugins-8.0.33-1.el7.x86_64.rpm

rpm -ivh mysql-community-embedded-compat-8.0.33-1.el7.x86_64.rpm

rpm -ivh mysql-community-libs-8.0.33-1.el7.x86_64.rpm

rpm -ivh mysql-community-libs-compat-8.0.33-1.el7.x86_64.rpm

yum install openssl-devel

rpm -ivh mysql-community-devel-8.0.33-1.el7.x86_64.rpm

rpm -ivh mysql-community-client-8.0.33-1.el7.x86_64.rpm

yum -y install mysql-community*

rpm -ivh mysql-community-server-8.0.33-1.el7.x86_64.rpm

rpm -ivh mysql-community-test-8.0.33-1.el7.x86_64.rpm

开始进行下一步

mysqld --initialize --console                                         #初始化数据库

chown -R mysql:mysql /var/lib/mysql/                         #给mysql目录属主属组改成mysql

systemctl start mysqld                                                 #启动mysql

systemctl status mysqld                                               #查看mysql状态(active running)

cat /var/log/mysqld.log |grep password                        #查看mysql密码

输入mysql密码

[root@localhost ~]# mysql -u root -p

Enter password:

进入数据库以后要修改密码

mysql> alter user 'root'@'localhost' identified with mysql_native_password by '123123';

Query OK, 0 rows affected (0.00 sec)

至此安装完成

设置远程连接

select host,user from user;

https://img-blog.csdnimg.cn/0620665e2870422abf9509c05d8273d2.png

说明用户只能本地登录

mysql> update user set user.host='%'where user.user='root';

Query OK, 1 row affected (0.01 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)


 

或者新增一条权限用户 分布执行:

mysql> create user 'root'@'%' identified by 'password'; Query OK, 0 rows affected (0.03 sec)

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION; Query OK, 0 rows affected (0.01 sec)

mysql> flush privileges; Query OK, 0 rows affected (0.00 sec)

然后用我们的远程工具测试即可

在Linux下MySQL(8.0.26)的安装部署

在Linux下MySQL(8.0.26)的安装部署

第一步、检查并删除已有的mysql,如果是新购买的阿里云,可以跳过。

提醒:这是很重要的工作。

  1. 执行命令:dnf list installed | grep mysql 。或者使用对应的rpm命令 yum list installed | grep mysql。 如果有内容,则使用 dnf remove 包名 或者 yum remove 包名 卸载。
  2. 执行命令:find / -name mysql 。如果有内容,则使用 rm -rf 文件路径 删除文件

仓库安装

1)下载MySQL的仓库 可以在MySQL的官方网站去下载,我们安装的是MySQL8.0.21版本

<https://repo.mysql.com//mysql80-community-release-el8-1.noarch.rpm>

也可以使用国内的镜像网站

 <https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/mysql-8.0-community-el8-x86_64/>

下面进行安装

rpm -i <https://repo.mysql.com//mysql80-community-release-el8-1.noarch.rpm>

查看有两个mysql的仓库说明rpm仓库装好了

2)然后在进行MySQL的安装

dnf install mysql-server  或 yum install mysql-server

3)启动服务

  1. systemctl start mysqld#启动服务
  2. grep password /var/log/mysql/mysqld.log#过滤密码,有无初始密码
  3. mysql_secure_installation#初始化工具,5.7之前的MySQL用来设置初始密码123

4)登录测试

mysql -u root -p#由刚刚上图可知,没有初始密码1

show databases;#查看当前数据库,测试是否能够运行1

5. 修改root的host向所有IP开放 `

        1.GRANT ALL PRIVILEGES ON . TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;

        2. flush privileges;`

  1. mysql8 需要分布执行:`password`要替换成你需要使用的密码
  2. `mysql> create user 'root'@'%' identified by 'password';
  3. Query OK, 0 rows affected (0.03 sec)`
  4. `mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
  5. Query OK, 0 rows affected (0.01 sec)`
  6. `mysql> flush privileges;
  7. Query OK, 0 rows affected (0.00 sec)`
  8. 3.重启
  9. 注意!!! mysql8,要求密码的复杂性,密码太简单会包下列错误

systemctl stop mysqld

systemctl start mysqld

mysql安装后登录出现问题

  1. 问题详情 输入正确的密码 依旧报错
  2. [root@iZbp12w6fxb1yh3v6yygdqZ mysql]# mysql -u root -p
  3. Enter password:
  4. ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

出现 using password的原因如下:

不输入密码:

错误的密码:

解决方案:

vim /etc/my.cnf文件;

在[mysqld]后添加skip-grant-tables(登录时跳过权限检查)

重启MySQL服务:systemctl restart mysqld

修改密码,重新登录

  1. mysql> SELECT user, host FROM mysql.user;
  2. +------------------+-----------+
  3. | user | host |
  4. +------------------+-----------+
  5. | mysql.infoschema | localhost |
  6. | mysql.session | localhost |
  7. | mysql.sys | localhost |
  8. | root | localhost |
  9. +------------------+-----------+
  10. 4 rows in set (0.00 sec)
  11. mysql> set password for 'root'@'localhost'='Root,13579';
  12. Query OK, 0 rows affected (0.01 sec)
  13. mysql> quit
  14. Bye
  15. [root@iZbp12w6fxb1yh3v6yygdqZ mysql]# mysql -u root -p
  16. Enter password:
  17. Welcome to the MySQL monitor. Commands end with ; or \\g.
  18. Your MySQL connection id is 8
  19. Server version: 8.0.33 MySQL Community Server - GPL
  20. Copyright (c) 2000, 2023, Oracle and/or its affiliates.
  21. Oracle is a registered trademark of Oracle Corporation and/or its
  22. affiliates. Other names may be trademarks of their respective
  23. owners.
  24. Type 'help;' or '\\h' for help. Type '\\c' to clear the current input statement.
  25. mysql>

mysql 数据库my.cnf配置文件名词解释

下面是每个MySQL配置的解释:

[mysqld] - 这是MySQL配置文件中的节名,表示将下面的配置应用于MySQL服务器进程。

datadir - 指定MySQL数据库文件的存储位置。

socket - 指定MySQL服务器与客户端之间进行通信时使用的套接字文件。

max_allowed_packet - 指定允许的最大数据包大小。如果插入或更新的数据包超过该大小,MySQL将拒绝此操作。

open_files_limit - 指定MySQL服务器可以同时打开的文件数的限制。这包括表、索引和日志文件等。

lower_case_table_names - 设置表名、数据库名和列名的大小写规则。如果设置为1,则将它们转换为小写。

thread_concurrency - 设置MySQL服务器上并发线程的最大数量。

thread_cache_size - 设置用于缓存线程的内存大小。这可以提高数据库的性能。

skip-name-resolve - 禁止MySQL服务器将主机名解析为IP地址。可以提高连接速度。

sort_buffer_size - 设置用于排序操作的缓冲区大小。

join_buffer_size - 设置用于连接操作的缓冲区大小。

tmp_table_size - 设置临时表的最大大小。

max_heap_table_size - 设置用于存储在内存中的最大堆表大小。

max_connections - 设置MySQL服务器的最大并发连接数。

wait_timeout - 设置连接在没有活动操作时的超时时间。

interactive_timeout - 设置为客户端连接在没有任何请求的情况下仍然被视为活动连接的超时时间。

back_log - 设置待处理连接请求的队列大小。

read_buffer_size - 设置读取数据时使用的缓冲区大小。

read_rnd_buffer_size - 设置执行随机读取操作时使用的缓冲区大小。

bulk_insert_buffer_size - 设置用于批量插入的缓冲区大小。

innodb_thread_concurrency - 设置InnoDB存储引擎的并发线程数。

innodb_buffer_pool_instances - 设置InnoDB缓冲池的实例数。

innodb_buffer_pool_size - 设置InnoDB缓冲池的大小。

innodb_log_buffer_size - 设置用于InnoDB事务日志缓冲区的大小。

innodb_log_file_size - 设置InnoDB事务日志文件的大小。

innodb_log_files_in_group - 设置InnoDB事务日志文件的数量。

server-id - 设置MySQL服务器的唯一标识。

skip_slave_start - 设置MySQL服务器不启动从属复制。

log-bin - 启用二进制日志记录,并设置二进制日志文件的名称。

log-bin-index - 指定二进制日志索引文件的名称。

log-slave-updates - 设置从属服务器是否将更新写入自己的二进制日志。

group_concat_max_len - 设置GROUP_CONCAT函数返回的字符串的最大长度。

relay-log - 设置从属服务器的中继日志文件的名称。

relay-log-index - 指定从属服务器的中继日志索引文件的名称。

auto_increment_increment - 设置自动增量列的步长,适用于多主复制设置。

auto_increment_offset - 设置自动增量列的起始值,适用于多主复制设置。

symbolic-links - 设置是否允许MySQL服务器创建符号链接。

sql_mode - 设置MySQL服务器的SQL模式,用于限制和规范SQL语句的语法和行为。

[mysqld_safe] - 这是MySQL配置文件中的另一个节名,用于配置MySQL安全模式下的错误日志和进程ID文件的位置。

【MySQL】解决2003-Can‘t connect to MySQL server on ‘XXX‘(10038)

解决2003-Can't connect to MySQL server on 'XXX'(10038)

  • 在本地的Navicat连接服务器上的数据库时,可能会出现如下错误,表示没有连接成功

解决方法:

1. 第一种方法:(我使用这种方法解决了问题)

  • 一般需要改下服务器上mysql的权限,首先登录服务器上的mysql,%:表示可以任何主机都能连接到mysql服务器
  1. GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '这里写自己数据库的密码' WITH GRANT OPTION;
  2. 1
  • 或者也可以把 % 换成自己本地的IP地址,如:
  1. GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.x.x' IDENTIFIED BY '这里写自己数据库的密码' WITH GRANT OPTION;
  2. 1
  • 最后刷新权限使其生效
  1. FLUSH PRIVILEGES;
  2. 1

2. 第二种方法:

  • 此时的MySQL配置不支持远程连接,登录服务器的mysql后,查看root用户下的 host
  1. use mysql;
  2. select host from user where user='root';
  3. 123

  • 可以看到root用户下只有 localhost 本地支持连接
  • 将localhost设置为通配符%,就可以允许远程连接了
  1. update user set host = '%' where user ='root';
  2. 1

localhost 指的是用户开放的IP,可以是localhost(仅本机访问,相当于127.0.0.1),可以是具体的某一IP,也可以是 ‘%’ (所有IP均可访问)

  • 查看更改后的变化
  1. select host, user from user;
  2. 1
  • 最后刷新权限即可
  1. FLUSH PRIVILEGES;
  2. 1

3. 第三种方法:

  • 可能是服务中的MySQL没有启动
  1. 解决:任务管理器-->服务-->MySQL-->右键开始-->重新连接测试
  2. 1

4. 第四种方法:

  • 可能是虚拟机防火墙或者3306端口未启用解决:
  • 输入命令 iptables -vnL|grep 3306 回车,查看防火墙是否设置了3306端口
  • 如果回车后没数据,说明没有3306端口;如果回车后显示3306端口是drop状态,都需要修正,方法如下:
/sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
  • 再次输入 iptables -vnL|grep 3306 回车即可看到3306端口状态信息:

  • 再使用navicat连接mysql就没有问题了。

查阅参考:

参考一

参考二

参考三

参考四

参考五

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/一键难忘520/article/detail/1006069
推荐阅读
相关标签
  

闽ICP备14008679号