我这里是RHEL6.5的系统,因此选择RedHat 6 x86,64bit操作系统---下载第一个RPM Bundle即可--mysql-8.0.28-1.el6.x86_64.rpm-bundle.tar。
目前MySQL8.0.28社区版提供了多种多样的安装方式,但是并未发现针对Linux Generic安装包包含的mysql_secure_installation的安装说明。
因此这里使用推荐的RPM安装:
一、mysql-8.0.28-1.el6.x86_64.rpm-bundle.tar解压后有如下7个文件:
-rw-r--r-- 1 root root 28987588 Apr 9 01:06 mysql-community-client-8.0.28-1.el6.x86_64.rpm
-rw-r--r-- 1 root root 28987588 Apr 9 01:06 mysql-community-client-plugins-8.0.28-1.el6.x86_64.rpm
-rw-r--r-- 1 root root 672184 Apr 9 01:06 mysql-community-common-8.0.28-1.el6.x86_64.rpm
-rw-r--r-- 1 root root 4443296 Apr 9 01:06 mysql-community-devel-8.0.28-1.el6.x86_64.rpm
-rw-r--r-- 1 root root 2579460 Apr 9 01:06 mysql-community-libs-8.0.28-1.el6.x86_64.rpm
-rw-r--r-- 1 root root 2579460 Apr 9 01:06 mysql-community-icu-data-files-8.0.28-1.el6.x86_64.rpm
-rw-r--r-- 1 root root 1902676 Apr 9 01:06 mysql-community-libs-compat-8.0.28-1.el6.x86_64.rpm
-rw-r--r-- 1 root root 395918848 Apr 9 01:07 mysql-community-server-8.0.28-1.el6.x86_64.rpm
-rw-r--r-- 1 root root 49092596 Apr 9 01:07 mysql-community-test-8.0.28-1.el6.x86_64.rpm
然后创建mysql用户:
useradd mysql
passwd mysql
二、安装顺序为:(建议装之前先把之前的mysql相关包全部卸载,rpm -e --nodeps 即可)
[root@python ~]# rpm -ivh mysql-community-common-8.0.28-1.el6.x86_64.rpm
warning: mysql-community-common-8.0.28-1.el6.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
Preparing... ########################################### [100%]
1:mysql-community-common ########################################### [100%]
[root@python ~]# rpm -ivh mysql-community-libs-8.0.28-1.el6.x86_64.rpm
warning: mysql-community-libs-8.0.28-1.el6.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
Preparing... ########################################### [100%]
1:mysql-community-libs ########################################### [100%]
[root@python ~]# rpm -ivh mysql-community-libs-compat-8.0.28-1.el6.x86_64.rpm
warning: mysql-community-libs-compat-8.0.28-1.el6.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
Preparing... ########################################### [100%]
file /usr/lib64/mysql/libmysqlclient.so.16.0.0 from install of mysql-community-libs-compat-8.0.28-1.el6.x86_64 conflicts with file from package mysql-libs-5.1.73-8.0.1.el6_8.x86_64
file /usr/lib64/mysql/libmysqlclient_r.so.16.0.0 from install of mysql-community-libs-compat-8.0.28-1.el6.x86_64 conflicts with file from package mysql-libs-5.1.73-8.0.1.el6_8.x86_64
--卸载多其他版本的mysql
[root@python ~]# rpm -e --nodeps mysql-libs-5.1.73-8.0.1.el6_8.x86_64
[root@python ~]# rpm -ivh mysql-community-libs-compat-8.0.28-1.el6.x86_64.rpm
warning: mysql-community-libs-compat-8.0.28-1.el6.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
Preparing... ########################################### [100%]
1:mysql-community-libs-co########################################### [100%]
[root@python ~]# rpm -ivh mysql-community-server-8.0.28-1.el6.x86_64.rpm
warning: mysql-community-server-8.0.28-1.el6.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
error: Failed dependencies:
mysql-community-client(x86-64) >= 8.0.0 is needed by mysql-community-server-8.0.28-1.el6.x86_64
[root@python ~]# rpm -ivh mysql-community-client-8.0.28-1.el6.x86_64.rpm
warning: mysql-community-client-8.0.28-1.el6.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
Preparing... ########################################### [100%]
1:mysql-community-client ########################################### [100%]
[root@python ~]# rpm -ivh mysql-community-server-8.0.28-1.el6.x86_64.rpm
warning: mysql-community-server-8.0.28-1.el6.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
Preparing... ########################################### [100%]
1:mysql-community-server ########################################### [100%]
[root@python ~]# rpm -ivh mysql-community-devel-8.0.28-1.el6.x86_64.rpm
warning: mysql-community-devel-8.0.28-1.el6.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
Preparing... ########################################### [100%]
1:mysql-community-devel ########################################### [100%]
[root@python ~]# rpm -ivh mysql-community-icu-data-files-8.0.28-1.el6.x86_64.rpm
warning: mysql-community-icu-data-files-8.0.28-1.el6.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
Preparing... ########################################### [100%]
1:mysql-community-icu-data-files########################################### [100%]
^[[A[root@python ~]# rpm -ivh mysql-community-test-8.0.28-1.el6.x86_64.rpm
warning: mysql-community-test-8.0.28-1.el6.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
error: Failed dependencies:
perl(JSON) is needed by mysql-community-test-8.0.28-1.el6.x86_64
--懒的去装perl了,因此测试套件就不装了。
三、安装完毕后相关信息如下:
[root@python ~]# mysql -V
mysql Ver 8.0.28 for Linux on x86_64 (MySQL Community Server - GPL)
[root@python ~]# ll /etc/init.d/mysqld
-rwxr-xr-x 1 root root 7166 Apr 8 16:21 /etc/init.d/mysqld
[root@python ~]# ll /etc/my.cnf --配置文件位置
-rw-r--r-- 1 root root 1188 Apr 8 16:21 /etc/my.cnf
默认的datadir是在/var/lib/mysql/,可以通过修改vi /etc/my.cnf修改,启动命令如下:
vi /etc/my.cnf
[mysqld]
skip-grant-tables
default-authentication-plugin=mysql_native_password
server-id = 2
datadir = /data/mysql/data
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
socket = /var/lib/mysql/mysql.sock
port = 3306
log-error = /var/log/mysqld.log
pid-file = /var/run/mysqld/mysqld.pid
character-set-server=UTF8MB4
[client]
port=3306
default-character-set=UTF8MB4
启动服务器mysqld服务
[root@python ~]# service mysqld start
Initializing MySQL database: [ OK ]
Starting mysqld:
[ OK ]
1、先关闭mysql服务
service mysql stop 停止
2、修改配置文件,添加免密码登陆
vim /etc/my.cnf
在[mysqld]下面添加一行skip-grant-tables
增加:skip-grant-tables
3、重新启动mysql服务,并从新连接到数据库,记得不用输入密码了(上面已配置跳过认证的步骤)
service mysql start
执行命令:mysql -u root -p (不要输入密码,直接敲回车)
4、开始执行修改的指令
选择数据库mysql : use mysql;
将密码置空 update user set authentication_string = '' where user = 'root';
退出 quit
5、再次编辑配置文件my.cnf 去除免密码登陆
修改mysql配置,删掉或注释掉步骤2中添加的语句 skip-grant-tables
6、重启服务
service mysql restart
7、修改密码,执行如下命令:
mysql -u root -p //提示输入密码时直接敲回车,刚刚已经将密码置空了
开始修改密码:
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '密码';
FLUSH PRIVILEGES;
mysql数据库安装成功.可以用客户端工具登录下试试
主从配置需要注意的点
主从服务器操作系统版本和位数一致;
Master 和 Slave 数据库的版本要一致;
Master 和 Slave 数据库中的数据要一致;
Master 开启二进制日志, Master 和 Slave 的 server_id 在局域网内必须唯一;
Master 开启二进制日志, Master 和 Slave 的 server_id 在局域网内必须唯一;
主从配置的简要步骤
Master 上的配置
安装数据库;
修改数据库配置文件, 指明 server_id, 开启二进制日志(log-bin);
启动数据库, 查看当前是哪个日志, position 号是多少;
登录数据库, 授权数据复制用户(IP 地址为从机 IP 地址, 如果是双向主从, 这里的还需要授权本机的 IP 地址, 此时自己的 IP 地址就是从 IP 地址);
备份数据库(记得加锁和解锁);
传送备份数据到 Slave 上;
启动数据库;
以下步骤, 为单向主从搭建成功, 想搭建双向主从需要的步骤:
登录数据库, 指定 Master 的地址、 用户、 密码等信息(此步仅双向主从时需要);
开启同步, 查看状态;
Slave 上的配置
安装数据库;
修改数据库配置文件, 指明 server_id(如果是搭建双向主从的话, 也要开启二进制 日志 log-bin);
启动数据库, 还原备份;
查看当前是哪个日志, position 号是多少(单向主从此步不需要, 双向主从需要);
指定 Master 的地址、 用户、 密码等信息;
开启同步, 查看状态。
1、主节(Master)点配置
修改 Master 的配置文件/etc/my.cnf
vi /etc/my.cnf
在my.cnf文件中加入如下配置内容
[mysqld]
log-bin=mysql-bin
server-id=1
2、从节点(Slave)配置
修改 Slave 的配置文件/etc/my.cnf
vi /etc/my.cnf
在my.cnf文件中加入如下配置内容
[mysqld]
log-bin=mysql-log
server-id=2
3、创建用于复制操作的用户
在主节点创建一个用户repl,用于从节点链接主节点时使用。注意repl是主服务器的用户,而 % 指的是从数据库的服务器IP,意思就是让从服务器有访问的权限
mysql> CREATE USER repl@'%' IDENTIFIED WITH mysql_native_password BY 'Yfservice_1234';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
刷新授权表信息
mysql> flush privileges;
4、获取主节点当前binary log文件名和位置(position)
mysql> SHOW MASTER STATUS;
5、在从(Slave)节点上设置主节点参数
CHANGE MASTER TO MASTER_HOST='192.168.10.251',MASTER_USER='repl',MASTER_PASSWORD='Yfservice_1234',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=1899;
6、查看(Slave)主从同步状态
mysql> show slave status\G;
7、开启主从同步
mysql> start slave;
8、再查看主从同步状态
mysql> show slave status\G;
查看状态时,可能会出现I/O任务启动失败的情况,即如下错误:
Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids; these ids must be different for replication to work (or the –replicate-same-server-id option must be used on slave but this does not always make sense; please check the manual before using it).
这是因为在MySQL主从结构中,从机上的server_id和主机上的server_id不能相同,我们可以看一下主机上的server_id和从机上的server_id是否相同。
mysql> show variables like 'server_id';
主机:
这里我们把从机的server_id改成2
mysql> set global server_id=2; #此处的数值和my.cnf里设置的一样就行
9、重新开启同步并查看装态
mysql> start slave;
mysql> show slave status\G;
开启主从之后,如果状态如上图所示,那么说明主从信息就已经配置好了,接下来我们测试一下在主机上创建一个数据库,然后在从机上是否能够同步创建。
首先看一下我们主机和从机除了MySQL本身自带的数据库之前目前是没有任何数据的。
三、同步主库已有数据到从库
主库操作:
1、停止主库的数据更新操作
mysql>flush tables with read lock;
2、新开终端,生成主数据库的备份(导出数据库)
[root@zhoujietest ~]# mysqldump -uroot -ptest123 testA > testA.sql
3、将备份文件传到从库
[root@zhoujietest ~]# scp testA.sql root@192.168.8.11:/root/
4、主库解锁
mysql>unlock tables;
从库操作:
1、停止从库slave
mysql>slave stop;
2、新建数据库testA
mysql> create database testA default charset utf8;
3、导入数据
[root@ops-dev ~]# mysql -uroot -ptest123 testA<testA.sql
4、查看从库已有该数据库和数据
mysql> show databases;+--------------------+
| Database |
+--------------------+
| information_schema |
| cmdb |
| mysql |
| performance_schema |
| test |
+--------------------+
此时主从库的数据完全一致,如果对主库进行增删改操作,从库会自动同步进行操作。