mysql安装,主从复制
该命令会安装MySQL服务器 (mysql-community-server) 及其所需的依赖、相关组件,包括mysql-community-client、mysql-community-common、mysql-community-libs等。原文链接:https://blog.csdn.net/qq_41510551/article/details/110731610。GPG 密钥配置为:fi
mysql安装
使用yum进行安装
1,打开网址:MySQL Yum储存库
找到对应linux的版本进行下载
查看自己的版本:
[root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 7.8.2003 (Core)
2,下载和安装mysql源
[root@localhost ~]# wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
3,如果显示wget未找到命令,则需要先安装wget:
yum -y install wget
4,然后再次执行上面命令
[root@localhost ~]# sudo rpm -Uvh mysql80-community-release-el7-3.noarch.rpm
5,检查是否安装成功:
执行成功后会在/etc/yum.repos.d/目录下生成两个repo文件mysql-community.repo及 mysql-community-source.repo
6,查看mysql相关资源
yum repolist enabled | grep "mysql.*-community.*"

7,使用命令:yum repolist all | grep mysql,查看当前yum repolist的所有版本
8,切换版本
[root@localhost ~] sudo yum-config-manager --disable mysql80-community
[root@localhost ~] sudo yum-config-manager --enable mysql57-community
9,安装mysql
[root@localhost ~]# sudo yum install mysql-community-server
该命令会安装MySQL服务器 (mysql-community-server) 及其所需的依赖、相关组件,包括mysql-community-client、mysql-community-common、mysql-community-libs等。安装时间会比较长
9.1 使用yum安装mysql 可能遇到错误 安装中遇到错误解决方式
错误:
mysql-community-libs-8.0.32-1.el7.x86_64.rpm 的公钥尚未安装
失败的软件包是:mysql-community-libs-8.0.32-1.el7.x86_64
GPG 密钥配置为:file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
解决办法:
执行如下命令后再次安装:
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
10,启动
[root@localhost ~]# systemctl start mysqld.service
[root@localhost ~]# systemctl status mysqld.service
11,修改密码及登录
初始密码
MySQL第一次启动后会创建超级管理员账号root@localhost,初始密码存储在日志文件中:
[root@localhost ~]# grep 'temporary password' /var/log/mysqld.log
2020-12-06T07:32:41.399112Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: Nd<-p!Fxt6A8
12,修改默认密码
# 先进行登录
[root@localhost ~]# mysql -uroot -p
Enter password:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'password';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
#密码太弱
解决方法如下:
使用复杂密码,MySQL默认的密码策略是要包含数字、字母及特殊字符;
如果只是测试用,不想用那么复杂的密码,可以修改默认策略,即validate_password_policy(以及validate_password_length等相关参数),使其支持简单密码的设定,具体方法可以参考:设置密码策略;
修改配置文件/etc/my.cnf,添加validate_password=OFF,保存并重启MySQL
修改报错后重启报错解决可参考:https://blog.csdn.net/aiyowei1106/article/details/88703746
————————————————
版权声明:本文为CSDN博主「笨菜先飞」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_41510551/article/details/110731610
13,设置编码
mysql> SHOW VARIABLES LIKE 'character%';
编辑/etc/my.cnf,[mysqld]节点增加以下代码
[mysqld]
character_set_server=utf8
init-connect='SET NAMES utf8'
14,设置开机启动
[root@localhost ~]# systemctl enable mysqld
[root@localhost ~]# systemctl daemon-reload
15,删除mysql mariadb
[root@localhost ~]# rpm -qa|grep mariadb
如无则跳过下面一条
删除mariadb
[root@localhost ~]# rpm -e --nodeps mariadb-server
[root@localhost ~]# rpm -e --nodeps mariadb
[root@localhost ~]# rpm -e --nodeps mariadb-libs
删除mysql
[root@localhost ~]# rpm -e --nodeps xxx

16,远程连接
远程连接时报错
原因 mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password
解决:
#更改加密方式
mysql> alter user 'root'@'%' identified with mysql_native_password by 'password';
Query OK, 0 rows affected (0.01 sec)
#更新用户密码
mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '密码';
Query OK, 0 rows affected (0.01 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

二:主从复制
1,修改主服务器master:
#vi /etc/my.cnf
[mysqld]
log-bin=mysql-bin //[必须]启用二进制日志
server-id=222 //[必须]服务器唯一ID,默认是1,一般取IP最后一段
2,修改从服务器slave:
#vi /etc/my.cnf
[mysqld]
log-bin=mysql-bin //[不是必须]启用二进制日志
server-id=226 //[必须]服务器唯一ID,默认是1,一般取IP最后一段
3,重启两台服务器的mysql
service mysqld restart;
4,在主服务器上建立帐户并授权slave:
mysql>CREATE USER 'chengjun1'@'%' IDENTIFIED WITH mysql_native_password BY '&Chengjun123';
mysql>GRANT ALL on *.* to 'chengjun1'@'%';
“%”表示所有客户端都可能连,只要帐号,密码正确,此处可用具体客户端IP代替,如192.168.145.226,加强安全。
5,登录主服务器的mysql,查询master的状态
mysql>show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000004 | 308 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
注:执行完此步骤后不要再操作主服务器MYSQL,防止主服务器状态值变化
6,配置从服务器Slave:
mysql>change master to master_host='192.168.1.100',master_user='chengjun1',master_password='&Chengjun123',
master_log_file='mysql-bin.000004',master_log_pos=308; //注意不要断开,308数字前后无单引号。
Mysql>start slave; //启动从服务器复制功能
7,检查从服务器复制功能状态:
mysql> show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.2.222 //主服务器地址
Master_User: mysync //授权帐户名,尽量避免使用root
Master_Port: 3306 //数据库端口,部分版本没有此行
Connect_Retry: 60
Master_Log_File: mysql-bin.000004
Read_Master_Log_Pos: 600 //#同步读取二进制日志的位置,大于等于Exec_Master_Log_Pos
Relay_Log_File: ddte-relay-bin.000003
Relay_Log_Pos: 251
Relay_Master_Log_File: mysql-bin.000004
Slave_IO_Running: Yes //此状态必须YES
Slave_SQL_Running: Yes //此状态必须YES
......
注:Slave_IO及Slave_SQL进程必须正常运行,即YES状态,否则都是错误的状态(如:其中一个NO均属错误)。
以上操作过程,主从服务器配置完成。
修改从服务配置时,先停掉复制功能。
stop slave;
修改后再次启动
start slave; //启动从服务器复制功能
更多推荐


所有评论(0)