如果查到的结果不为空,则进入第2步卸载mysql
rpm -qa|grep -i mysql
#停止mysql服务
systemctl stop mysqld
#删除软件命令
rpm -e –nodeps $(rpm -qa|grep -i mysql)
# 如果提示依赖包错误,则使用以下命令尝试:
rpm -ev $(rpm -qa|grep -i mysql) --nodeps
# 如果提示错误:error: %preun(xxxxxx) scriptlet failed, exit status 1
# 则用以下命令尝试:
rpm -e --noscripts $(rpm -qa|grep -i mysql)
#删除卸载后残留的mysql的目录
find / -name mysql #然后使用 rm -rf 将查询到的目录全部删除
#删除残留的mysql的配置文件
rm -rf /etc/my.cnf
rm -rf /etc/my.cnf.d
方式一:使用百度网盘下载:
方式二:在MySQL官网中找到YUM源rpm安装包:
下载页面:https://downloads.mysql.com/archives/community/
具体下载地址:https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.29-1.el7.x86_64.rpm-bundle.tar
上传并解压rpm的压缩包
mkdir -p /baicdt/softwares/mysql_rpm
cd /baicdt/softwares/
# 使用rz命令将下载的tar包上传到当前目录 yum -y install lrzsz
# 解压至/baicdt/softwares/mysql_rpm目录
tar -xvf /baicdt/softwares/mysql-5.7.29-1.el7.x86_64.rpm-bundle.tar -C /baicdt/softwares/mysql_rpm/
# 进入解压后的目录删除不需要安装的包
cd /baicdt/softwares/mysql_rpm
扩展:各rpm包的作用如下表,我们仅安装使用到的包即可
NO | 包名 | 作用 | 是否安装 |
---|---|---|---|
1 | client | MySQL客户端 | 是 |
2 | common | 服务端和客户端常用库文件 | 是 |
3 | devel | 客户端开发用的头文件及库 | 是 |
4 | embedded | 嵌入式版本 | 否 |
5 | embedded-compat | 兼容老版本嵌入式的共享库 | 否 |
6 | embedded-devel | 嵌入式版本的头文件与库 | 否 |
7 | libs | 数据库客户端共享库 | 是 |
8 | libs-compat | 兼容老版本的共享库 | 是 |
9 | server | 数据库服务端与相关工具 | 是 |
10 | test | MySQL测试套件 | 否 |
开始安装:
# 注意:因逐层建存在依赖,安装顺序不要随意变
yum remove mysql-libs
cd /baicdt/softwares/mysql_rpm
rpm -ivh mysql-community-common-5.7.29-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.29-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-compat-5.7.29-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.29-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.29-1.el7.x86_64.rpm
rpm -ivh mysql-community-devel-5.7.29-1.el7.x86_64.rpm
# 删除安装包后,查看是否安装成功
rm -rf /baicdt/softwares/mysql_rpm/* && rpm -qa|grep -i mysql
#1.临时启动mysql服务
systemctl start mysqld
#2.开机启动mysql服务
systemctl enable mysqld
#3.查看MySQL的启动状态
systemctl status mysqld
#4.查看mysql进程是否正常开启
ps -le | grep mysqld
netstat -ntlp | 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';
生产环境为了安全考虑,不要改密码策略!!!
测试机环境为了方便记mysql密码,可选择下面的方案①:
vim /etc/my.cnf
在配置文件中添加下面的内容:
#因为服务器是测试环境,为了方便记mysql密码,关闭了密码策略。如果是生产环境,则不建议修改密码策略
validate_password=off
重新启动mysql服务使配置生效:
systemctl restart mysqld
#登陆mysql
mysql -u root -pWsygzgr_2020
修改root用户密码为123456
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
编辑 vim /etc/my.cnf
配置文件,添加如下配置:
skip_ssl
character_set_server=utf8
init_connect='SET NAMES utf8'
重启MySQL服务
systemctl restart mysqld
# 登陆mysql
mysql -uroot -p123456
查看MySQL默认编码确认是否修改成功:
show variables like 'char%';
查看排序规则
show variables like 'collation%';
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;
一般为了安全起见,会创建专用只读权限账号给的特定的IP地址
GRANT SELECT ON 库名.表名 TO '账号名'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION;
FLUSH PRIVILEGES;
编辑 vim /etc/my.cnf
配置文件,添加如下配置:
[mysqld]
skip-grant-tables
重启mysql,并不使用密码登录mysql
systemctl restart mysqld
mysql -u root
修改root用户的密码
update mysql.user set authentication_string=password('123456') where user='root' and Host = 'localhost';
flush privileges
设置好密码后再删掉
/etc/my.cnf
中的skip-grant-tables
配置项,并重启mysql
-- 创建新用户
CREATE USER '新用户名'@'%'IDENTIFIED BY '设置新用户的密码';
-- 把数据库的访问权限给新用户
GRANT ALL PRIVILEGES ON 数据库名.* TO '用户名'@'%' IDENTIFIED BY '密码';
-- 给新用户开启所有远程访问权限
GRANT ALL PRIVILEGES ON *.* TO '用户名'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION;
-- 刷新mysql的权限列表
FLUSH PRIVILEGES;
https://blog.csdn.net/wwwdc1012/article/details/88373440
binlog日志简单介绍:
- 用来记录mysql中的 增加 、 删除 、 修改 操作
- select操作 不会 保存到binlog中
- 必须要 打开 mysql中的binlog功能,才会生成binlog日志
- binlog日志就是一系列的二进制文件
编辑 vim /etc/my.cnf
配置文件,添加如下配置:
log-bin=/var/lib/mysql/mysql-bin
binlog-format=ROW
server_id=1
配置说明:
- 配置binlog日志的存放路径为/var/lib/mysql目录,文件以mysql-bin开头
- 配置mysql中每一行记录的变化都会详细记录下来
- 配置当前机器器的服务ID(如果是mysql集群,不能重复)
重启mysql并登录
systemctl restart mysqld
mysql -u root -p123456
登录mysql执行以下SQL命令查看配置是否生效
show variables like '%log_bin%';
mysql输出以下内容,表示binlog已经成功开启
+---------------------------------+--------------------------------+
| Variable_name | Value |
+---------------------------------+--------------------------------+
| log_bin | ON |
| log_bin_basename | /var/lib/mysql/mysql-bin |
| log_bin_index | /var/lib/mysql/mysql-bin.index |
| log_bin_trust_function_creators | OFF |
| log_bin_use_v1_row_events | OFF |
| sql_log_bin | ON |
+---------------------------------+--------------------------------+
6 rows in set (0.00 sec)
查看生产的binlog日志,为二进制格式
[root@core01 ~]# cd /var/lib/mysql
[root@core01 mysql]# ll -ah | grep mysql-bin.000001
-rw-r----- 1 mysql mysql 154 Jul 17 10:36 mysql-bin.000001
# 导出binlog内容到文件中
mysqlbinlog --base64-output=decode-rows --start-datetime='2021-11-15 10:00:19' --stop-datetime='2021-11-15 15:30:19' /var/lib/mysql/mysql-bin.000001 > /root/temp01.log -v
more /root/temp01.log
查看binlog日志的内容
show binlog events in 'mysql-bin.000001';
安装环境:
主(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
对主库做增删改操作,验证从库数据同步情况。
-- 1. 设置
-- 开启日志
SET GLOBAL log_output = 'TABLE';
SET GLOBAL general_log = 'ON';
SHOW VARIABLES LIKE '%general_log%';
-- 2. 查询
SELECT * FROM mysql.general_log ORDER BY event_time DESC;
-- 3. 清空表,不能对此表使用delete操作,只能用truncate
truncate table mysql.general_log;
-- 4. 关闭日志
SET GLOBAL log_output = 'TABLE';
SET GLOBAL general_log = 'OFF';
以日志文件的形式查看:
--
SET GLOBAL log_output = 'FILE';
SET GLOBAL general_log = 'ON';
-- 直接监控日志文件 tail -f /var/lib/mysql/config.log
-- 关闭日志
SET GLOBAL log_output = 'TABLE';
SET GLOBAL general_log = 'OFF';
mysql -uroot -p123456 -e "CREATE DATABASE IF NOT EXISTS \`azkaban\`;USE \`azkaban\`;"
mysql -uroot -pWsygzgr_2022 -e "./source aaa.sql"
mysql -uroot -p123456 -Dazkaban</opt/softwares/azkaban-db-0.1.0-SNAPSHOT/create-all-sql-0.1.0-SNAPSHOT.sql
custom_sql.sh
#!/bin/sh
PARAM_1ST=$1
CUR_TIMESTAMP=`date +%Y-%m-%d\ %H:%M:%S`
echo -e "\e[40;32m[0] \$0参数为: $0 \e[0m"
echo -e "\e[40;32m[1] \$参数为: $PARAM_1ST \e[0m"
echo -e "\e[40;32m[2] 当前时间:$CUR_TIMESTAMP \e[0m"
echo -e "\e[40;32m[3] 准备生成 aaa.sql 脚本 \e[0m"
cat > aaa.sql << EOF
-- 脚本生成时间: $CUR_TIMESTAMP
CREATE DATABASE IF NOT EXISTS \`az_workflow_dev\` DEFAULT CHARACTER SET utf8;
USE az_workflow_dev;
DROP TABLE IF EXISTS \`workflow_regist\`;
CREATE TABLE \`workflow_regist\`
(
\`id\` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '用户id',
\`work_name\` varchar(128) NOT NULL COMMENT '任务名称[全局唯一]',
\`work_desc\` varchar(512) DEFAULT NULL COMMENT '任务描述',
\`devops_user\` varchar(128) NOT NULL COMMENT '维护人',
\`devops_phone\` varchar(32) NOT NULL COMMENT '维护人电话',
\`devops_email\` varchar(256) NOT NULL COMMENT '维护人email',
\`devops_dingding\` varchar(1024) DEFAULT NULL COMMENT '维护人钉钉号',
\`dingbot\` varchar(1024) DEFAULT NULL COMMENT '预警钉钉群',
\`version\` int(10) unsigned NOT NULL DEFAULT '1' COMMENT '版本号',
\`created_at\` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
\`updated_at\` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
\`is_deleted\` tinyint(1) DEFAULT '0' COMMENT '是否删除',
PRIMARY KEY (\`id\`) USING BTREE,
KEY \`workName_KEY\` (\`work_name\`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='Azkaban工作流注册表';
INSERT INTO \`az_workflow_dev\`.\`workflow_regist\`(\`id\`, \`work_name\`, \`work_desc\`, \`devops_user\`, \`devops_phone\`, \`devops_email\`, \`devops_dingding\`, \`dingbot\`, \`version\`, \`created_at\`, \`updated_at\`, \`is_deleted\`) VALUES (1, 'first_work_name', '第一个工作流', 'DevimKim', '13770473170', '[email protected]', '大数据', NULL, 1, '2022-05-16 12:40:07', '2022-05-16 12:40:07', 0);
INSERT INTO \`az_workflow_dev\`.\`workflow_regist\`(\`id\`, \`work_name\`, \`work_desc\`, \`devops_user\`, \`devops_phone\`, \`devops_email\`, \`devops_dingding\`, \`dingbot\`, \`version\`, \`created_at\`, \`updated_at\`, \`is_deleted\`) VALUES (2, 'second_work_name', '第二个工作流', 'DevimKim', '13770473170', '[email protected]', NULL, NULL, 1, '2022-05-16 12:40:07', '2022-05-16 12:40:07', 0);
INSERT INTO \`az_workflow_dev\`.\`workflow_regist\`(\`id\`, \`work_name\`, \`work_desc\`, \`devops_user\`, \`devops_phone\`, \`devops_email\`, \`devops_dingding\`, \`dingbot\`, \`version\`, \`created_at\`, \`updated_at\`, \`is_deleted\`) VALUES (3, 'third_work_name', '第三个工作流', 'jinyanxu4', '13770473170', '[email protected]', '大数据', NULL, 4, '2022-05-16 12:40:07', '2022-05-16 12:48:27', 0);
INSERT INTO \`az_workflow_dev\`.\`workflow_regist\`(\`id\`, \`work_name\`, \`work_desc\`, \`devops_user\`, \`devops_phone\`, \`devops_email\`, \`devops_dingding\`, \`dingbot\`, \`version\`, \`created_at\`, \`updated_at\`, \`is_deleted\`) VALUES (4, 'fourth_work_name', '第四个工作流', 'DevimKim', '13770473170', '[email protected]', NULL, NULL, 1, '2022-05-16 12:40:07', '2022-05-16 12:40:07', 0);
INSERT INTO \`az_workflow_dev\`.\`workflow_regist\`(\`id\`, \`work_name\`, \`work_desc\`, \`devops_user\`, \`devops_phone\`, \`devops_email\`, \`devops_dingding\`, \`dingbot\`, \`version\`, \`created_at\`, \`updated_at\`, \`is_deleted\`) VALUES (5, 'fifth_work_name', '第五个工作流', 'DevimKim', '13770473170', '[email protected]', '大数据', NULL, 1, '2022-05-16 12:40:07', '2022-05-16 12:40:07', 0);
INSERT INTO \`az_workflow_dev\`.\`workflow_regist\`(\`id\`, \`work_name\`, \`work_desc\`, \`devops_user\`, \`devops_phone\`, \`devops_email\`, \`devops_dingding\`, \`dingbot\`, \`version\`, \`created_at\`, \`updated_at\`, \`is_deleted\`) VALUES (6, 'sixth_work_name', '第六个工作流', 'DevimKim', '13964213170', '[email protected]', NULL, NULL, 1, '2022-05-16 12:40:07', '2022-05-16 12:40:07', 0);
INSERT INTO \`az_workflow_dev\`.\`workflow_regist\`(\`id\`, \`work_name\`, \`work_desc\`, \`devops_user\`, \`devops_phone\`, \`devops_email\`, \`devops_dingding\`, \`dingbot\`, \`version\`, \`created_at\`, \`updated_at\`, \`is_deleted\`) VALUES (7, 'seventh_work_name', '第七个工作流', 'DevimKim', '13964213170', '[email protected]', '大数据', NULL, 1, '2022-05-16 12:40:07', '2022-05-16 12:40:07', 0);
INSERT INTO \`az_workflow_dev\`.\`workflow_regist\`(\`id\`, \`work_name\`, \`work_desc\`, \`devops_user\`, \`devops_phone\`, \`devops_email\`, \`devops_dingding\`, \`dingbot\`, \`version\`, \`created_at\`, \`updated_at\`, \`is_deleted\`) VALUES (8, 'eighth_work_name', '第八个工作流', 'DevimKim', '13964213170', '[email protected]', '大数据', NULL, 1, '2022-05-16 12:40:07', '2022-05-16 12:40:07', 0);
select * from az_workflow_dev.workflow_regist;
select version();
select sleep(2);
select * from az_workflow_dev.workflow_regist where work_name = '$PARAM_1ST';
EOF
mysql -uroot -pWsygzgr_2022 -e"source aaa.sql"
./custom_sql.sh fifth_work_name