如果查到的结果不为空,则进入第2步卸载mysql
rpm -qa|grep -i mysql
#停止mysql服务
systemctl stop mysqld
#删除软件命令
rpm -e –nodeps 包名
#如果上面命令提示依赖包错误,则使用以下命令尝试:
rpm -ev 包名 --nodeps
#如果还报错:error: %preun(xxxxxx) scriptlet failed, exit status 1,则用以下命令尝试:
rpm -e --noscripts 包名
#最终再使用rpm -qa|grep -i mysql命令,查询不到结果则证明mysql已卸载
#删除卸载后残留的mysql的目录
find / -name mysql #然后使用 rm -rf 将查询到的目录全部删除
#删除残留的mysql的配置文件
rm -rf /etc/my.cnf
rm -rf /etc/my.cnf.d
使用阿里的镜像源安装MySQL时下载速度比较快
#1.备份原镜像文件,便于后期恢复
cd /etc/yum.repos.d/
mv CentOS-Base.repo CentOS-Base.repo.backup
#2.下载阿里云的CentOS-Base.repo 到/etc/yum.repos.d/
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
#3. 清除缓存
yum clean all
#4. 生成缓存
yum makecache
在MySQL官网中可以找到YUM源rpm安装包:
https://dev.mysql.com/downloads/repo/yum/
下载rpm包,并安装
mkdir -p /baicdt/softwares/mysql_rpm
cd /baicdt/softwares/mysql_rpm
#1.下载rpm包
wget https://repo.mysql.com//mysql80-community-release-el7-3.noarch.rpm
#2.安装myaql源
yum localinstall -y mysql80-community-release-el7-3.noarch.rpm
#3.检查MySQL源是否安装成功,此时查到的安装包的版本都是mysql5.8版本的
yum repolist enabled | grep "mysql.*-community.*"
修改yum源配置文件,获取自己想要安装的mysql5.7版本
vim /etc/yum.repos.d/mysql-community.repo
需要编辑的内容参考下图,enabled等于1表示选择本版本
#5.检查MySQL源是否选择的是5.7版本,此时查到的安装包的版本都是mysql5.7版本的
yum repolist enabled | grep "mysql.*-community.*"
安装mysql
#下载速度较慢,需等待一段时间
yum -y install mysql-community-server
启动mysql服务
#1.临时启动mysql服务
systemctl start mysqld
#2.开机启动mysql服务
systemctl enable mysqld
#3.查看MySQL的启动状态
systemctl status mysqld
#4.查看mysql进程是否正常开启
ps -le | grep mysqld
mysql安装完成之后,在/var/log/mysqld.log
文件中给root生成了一个默认密码。通过以下命令找到密码:
grep 'temporary password' /var/log/mysqld.log
-- 登录MySQL,使用刚才找到的密码
mysql -u root -p
-- 修改root用户密码(二选一)
set password for 'root'@'localhost'=password('Wsygzgr_2020');
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Wsygzgr_2020';
vim /etc/my.cnf
在配置文件中添加下面的内容:
#因为服务器是测试环境,为了方便记mysql密码,关闭了密码策略。如果是生产环境,则不建议修改密码策略
validate_password=off
character_set_server=utf8
init_connect='SET NAMES utf8'
重新启动mysql服务使配置生效:
systemctl restart mysqld
#重新设置mysql密码为123456
mysql -u root -pWsygzgr_2020
修改root用户密码
set password for 'root'@'localhost'=password('123456');
MySQL默认配置文件路径:
配置文件: /etc/my.cnf
日志文件: /var/log//var/log/mysqld.log
服务启动脚本: /usr/lib/systemd/system/mysqld.service
socket文件: /var/run/mysqld/mysqld.pid
mysql默认只允许root帐户在本地登录,想要远程连接mysql,必须开启root用户允许远程连接,或者添加一个允许远程连接的帐户。
开启root用户远程连接(任意IP都可以访问)
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
FLUSH PRIVILEGES;
扩展:
指定特定的IP,开启root用户远程连接
GRANT ALL PRIVILEGES ON . TO 'root'@'指定的IP' IDENTIFIED BY 'root用户的密码' WITH GRANT OPTION;
FLUSH PRIVILEGES;
一般为了安全起见,会创建专用的远程访问用户
GRANT ALL PRIVILEGES ON *.* TO 'dadeity'@'%' IDENTIFIED BY 'daDeity@163.com' WITH GRANT OPTION;
FLUSH PRIVILEGES;
-- 创建新用户
CREATE USER '新用户名'@'%'IDENTIFIED BY '设置新用户的密码';
-- 把数据库的访问权限给新用户
GRANT ALL PRIVILEGES ON 数据库名.* TO '用户名'@'%' IDENTIFIED BY '密码';
-- 给新用户开启所有远程访问权限
GRANT ALL PRIVILEGES ON *.* TO '用户名'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION;
-- 刷新mysql的权限列表
FLUSH PRIVILEGES;
在/etc/my.cnf文件[mysqld]下面加如下命令
vim /etc/my.cnf
配置如下内容
skip-grant-tables
登陆mysql并改改密码
mysql -u root
UPDATE mysql.user SET authentication_string=PASSWORD('123456') WHERE USER='root' AND HOST = 'localhost';
FLUSH PRIVILEGES
设置好密码后再删掉/etc/my.cnf中的skip-grant-tables
配置
安装环境:
主(Master) centos7:192.168.52.100
从(Slave) centos7:192.168.52.110
vim /etc/my.cnf
配置的内容为:
#主节点开启二进制日志功能
log-bin=mysql-bin
#标识唯一id(必须),一般使用ip最后位
server-id=100
#不需要同步的数据库,可设置多个
binlog-ignore-db=information_schema
binlog-ignore-db=mysql
#指定需要同步的数据库,可以设置多个
binlog-do-db=test
binlog-do-db=demo
修改完配置,重启mysql
systemctl restart mysqld
#进入Mysql
mysql -u root -p123456
赋予从库权限帐号,允许用户在主库上读取日志,赋予192.168.52.110也就是Slave机器有File权限,只赋予Slave机器有File权限还不行,还要给它REPLICATION SLAVE的权限才可以。
GRANT FILE ON *.* TO 'root'@'192.168.52.110' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE ON *.* TO 'root'@'192.168.52.110' IDENTIFIED BY '123456';
FLUSH PRIVILEGES;
重启Mysql后查看主库信息
show master status;
这里的 File 、Position 是在配置Salve的时候要使用到的,Binlog_Do_DB表示要同步的数据库,Binlog_Ignore_DB 表示Ignore的数据库,这些都是在配置的时候进行指定的。
另外:如果执行这个步骤始终为Empty set(0.00 sec),那说明前面的my.cnf没配置对。
vim /etc/my.cnf
配置的内容为:
#主节点开启二进制日志功能
log-bin=mysql-bin
#标识唯一id(必须),一般使用ip最后位
server-id=110
#指定不需要复制的数据库(与主节点binlog-ignore-db要一一对应)
replicate-ignore-db=information_schema
replicate-ignore-db=mysql
#指定需要同步的数据库(与主节点binlog-ignore-db要一一对应)
replicate-do-db=test
replicate-do-db=demo
#此选项告诉从属服务器将其SQL线程执行的更新记录到其自己的二进制日志中。
log-slave-updates
#跳过所有错误
slave-skip-errors=all
slave-net-timeout=60
修改完配置,重启mysql
systemctl restart mysqld
#进入Mysql
mysql -u root -p123456
STOP SLAVE;
CHANGE MASTER TO MASTER_HOST='192.168.52.100',MASTER_USER='root',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=154;
-- 开启Slave
START SLAVE;
在这里指定Master的信息,master_log_file是在配置Master的时候的File选项, master_log_pos是在配置Master的Position 选项,这里要进行对应。
查看配置的信息:
SHOW SLAVE STATUS \G;
当查询结果中包含下面两行结果,则表示配置成功了
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
对主库做增删改操作,验证从库数据同步情况。