mysql安装部署(2022)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: mysql安装部署(2022)

华为云centos7及以上版本 默认安装了MariaDB,所以安装MySQL之前需要先卸载 MariDB

1.卸载MariaDB

yum list installed | grep mariadb # 查询已安装mariadb
 yum -y remove mariadb* #移除已安装的mariadb
 yum list installed | grep mariadb # 在查询一遍,确保卸载干净了

2.下载RPM

cd /usr/local
 mkdir mysql
 cd mysql
 wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm

3.安装rpm包,并确认yum源

rpm -ivh mysql57-community-release-el7-11.noarch.rpm 

4.查看mysql版本

yum repolist all | grep mysql

5.安装mysql

yum install mysql-community-server

6.启动mysql

systemctl start mysqld

7.查找初次的密码

mysql密码一般存在 /var/log/mysqld.log文件中
 cat /var/log/mysqld.log | grep temporary # 查找临时密码
 mysql -u root -p # 输入密码,登录mysql

8.修改默认密码

mysql 5.7开始密码不能太过简单,否则无法修改成功,因此需要先修改全局变量
 mysql> set global validate_password_policy=LOW;
 mysql> set global validate_password_length=0;
 # 修改密码
 ALTER USER USER() IDENTIFIED BY 'wingkin45';#wingkin为密码
 flush privileges;

9.配置远程访问

# 登录mysql
 use mysql;
 update user set host='%' where user='root';
 flush privileges;
自此mysql安装成功。

10.卸载mysql

yum -y remove mysql* #移除已安装的mysql

11.主从复制

前提条件:搭建好两台mysql,并且保证两台服务可以互相ping通,并且开放了3306端口

master: 192.168.140.101

slave: 192.168.140.102

能够互相ping通

配置master

先停止当前mysql,systemctl stop mysqld

执行vim /etc/my.cnf,修改mysql配置文件

# For advice on how to change settings please see
 # http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html
 [mysqld]
 #
 # Remove leading # and set to the amount of RAM for the most important data
 # cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
 # innodb_buffer_pool_size = 128M
 #
 # Remove leading # to turn on a very important data integrity option: logging
 # changes to the binary log between backups.
 # 配置 binlog的存储位置,这个位置需要提前创建
 log_bin=/var/lib/mysql/data/binlog/mysql-bin
 # 配置服务器id,必须唯一
 server-id=1
 # 配置同步写入策略,每次写入都同步
 sync-binlog=1
 # 配置 同步的数据库,多个可以配置多行记录
 binlog-do-db=fanco
 # 二进制日志保留时间
 expire-logs-days=7
 # 不备份的数据库
 binlog-ignore-db=information_schema
 binlog-ignore-db=performation_schema
 binlog-ignore-db=sys
 #
 # Remove leading # to set options mainly useful for reporting servers.
 # The server defaults are faster for transactions and fast SELECTs.
 # Adjust sizes as needed, experiment to find the optimal values.
 # join_buffer_size = 128M
 # sort_buffer_size = 2M
 # read_rnd_buffer_size = 2M
 datadir=/var/lib/mysql
 socket=/var/lib/mysql/mysql.sock
 # Disabling symbolic-links is recommended to prevent assorted security risks
 symbolic-links=0
 log-error=/var/log/mysqld.log
 pid-file=/var/run/mysqld/mysqld.pid

修改好my.cnf文件后,执行systemctl start mysqld

尝试重启mysql,不出意外的话,会报错。

错误1

mysqld: File ‘/var/lib/mysql/data/binlog/mysql-bin.index’ not found (Errcode: 2 - No such file or directory)


ps: 这里是因为 我们配置的 /var/lib/mysql/data/binlog/这个文件夹的权限并没有给mysql,导致mysql没有权限创建这个文件

解决方案:

chown mysql:mysql -R /var/lib/mysql

错误2

mysql报错Errcode: 13 “Permission denied”


ps: 这里是在处理从库 relay-log 中转日志爆出的这个错误

解决方案:

chmod -R 777 /var/lib/mysql

启动mysql成功后,登入查看

-- 执行show master status;
 mysql> show master status;
 +------------------+----------+--------------+--------------------------------------------+-------------------+
 | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB                           | Executed_Gtid_Set |
 +------------------+----------+--------------+--------------------------------------------+-------------------+
 | mysql-bin.000001 |     1032 | fanco        | information_schema,performation_schema,sys |                   |
 +------------------+----------+--------------+--------------------------------------------+-------------------+
 file表示binlog文件,position表示 slave服务器读取的位置,binlog_do_db表示 复制的数据库
 binlog_ignore_db 表示 不复制的数据库

为master主机设置一个复制账号(user=aaaa,pwd=123456),并且授权

-- 1. 去除密码插件
 uninstall plugin validate_password;
 -- 2. 创建新用户
 CREATE USER 'aaaa'@'192.168.%.%' IDENTIFIED BY '123456';  # 用户和密码 自定义
 -- 3. 分配复制权限   *.* 所有数据库的所有表
 grant replication slave,replication client on *.* to aaaa@'192.168.%.%' identified by '123456';  
 -- 4. 刷新权限
 flush privileges;
 '192.168.%.%'  表示这个授权用户从哪台服务器host能够登录

配置 slave

修改my.cnf

# For advice on how to change settings please see
 # http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html
 [mysqld]
 #
 # Remove leading # and set to the amount of RAM for the most important data
 # cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
 # innodb_buffer_pool_size = 128M
 #
 # Remove leading # to turn on a very important data integrity option: logging
 # changes to the binary log between backups.
 # log_bin
 server-id=2
 relay_log=/var/lib/mysql/data/binlog/mysql-relay-bin
 replicate-do-db=fanco
 read_only=1
 log_slave_updates=1
 # Remove leading # to set options mainly useful for reporting servers.
 # The server defaults are faster for transactions and fast SELECTs.
 # Adjust sizes as needed, experiment to find the optimal values.
 # join_buffer_size = 128M
 # sort_buffer_size = 2M
 # read_rnd_buffer_size = 2M
 datadir=/var/lib/mysql
 socket=/var/lib/mysql/mysql.sock
 # Disabling symbolic-links is recommended to prevent assorted security risks
 symbolic-links=0
 log-error=/var/log/mysqld.log
 pid-file=/var/run/mysqld/mysqld.pid

启动从服务器的复制线程

1.先在主节点执行下show master status;

mysql> show master status;
 +------------------+----------+--------------+--------------------------------------------+-------------------+
 | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB                           | Executed_Gtid_Set |
 +------------------+----------+--------------+--------------------------------------------+-------------------+
 | mysql-bin.000001 |     1680 | fanco        | information_schema,performation_schema,sys |                   |
 +------------------+----------+--------------+--------------------------------------------+-------------------+

2.在slave节点执行如下命令:

-- 绑定主服务器
 change master to master_host='192.168.140.101',
     > master_user='fancocp',
     > master_password='123456',
     > master_log_file='mysql-bin.000001',
     > master_log_pos=1680;
 此处有报错,需要 chmod 设置权限
 -- 启动复制线程
 start slave;
 如果一切正常,主从复制就会启动了
 2021-12-21T12:12:01.904977Z 9 [Note] Slave I/O thread for channel '': connected to master 'fancocp@192.168.140.101:3306',replication started in log 'mysql-bin.000001' at position 1032

3.在主数据库增加一个记录,看从数据库是否会将数据同步过来。

4.查看从数据库状态

mysql> show slave status\G;
 *************************** 1. row ***************************
                Slave_IO_State: Waiting for master to send event
                   Master_Host: 192.168.140.101 # 主服务器ip
                   Master_User: fancocp # 用于同步的数据库用户
                   Master_Port: 3306 # 端口
                 Connect_Retry: 60   # 重试时间
               Master_Log_File: mysql-bin.000001
           Read_Master_Log_Pos: 3904
                Relay_Log_File: mysql-relay-bin.000002
                 Relay_Log_Pos: 3192
         Relay_Master_Log_File: mysql-bin.000001
              Slave_IO_Running: Yes
             Slave_SQL_Running: Yes
               Replicate_Do_DB: fanco
           Replicate_Ignore_DB: 
            Replicate_Do_Table: 
        Replicate_Ignore_Table: 
       Replicate_Wild_Do_Table: 
   Replicate_Wild_Ignore_Table: 
                    Last_Errno: 0
                    Last_Error: 
                  Skip_Counter: 0
           Exec_Master_Log_Pos: 3904
               Relay_Log_Space: 3399
               Until_Condition: None
                Until_Log_File: 
                 Until_Log_Pos: 0
            Master_SSL_Allowed: No
            Master_SSL_CA_File: 
            Master_SSL_CA_Path: 
               Master_SSL_Cert: 
             Master_SSL_Cipher: 
                Master_SSL_Key: 
         Seconds_Behind_Master: 0
 Master_SSL_Verify_Server_Cert: No
                 Last_IO_Errno: 0
                 Last_IO_Error: 
                Last_SQL_Errno: 0
                Last_SQL_Error: 
   Replicate_Ignore_Server_Ids: 
              Master_Server_Id: 1
                   Master_UUID: f65ef6f1-623d-11ec-9502-000c291f0bc2
              Master_Info_File: /var/lib/mysql/master.info
                     SQL_Delay: 0
           SQL_Remaining_Delay: NULL
       Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
            Master_Retry_Count: 86400
                   Master_Bind: 
       Last_IO_Error_Timestamp: 
      Last_SQL_Error_Timestamp: 
                Master_SSL_Crl: 
            Master_SSL_Crlpath: 
            Retrieved_Gtid_Set: 
             Executed_Gtid_Set: 
                 Auto_Position: 0
          Replicate_Rewrite_DB: 
                  Channel_Name: 
            Master_TLS_Version: 
 1 row in set (0.00 sec)
 ERROR: 
 No query specified

至此,mysql主从复制就算是配置好了

binlog相关的命令

# 查看是否开启binlog
 mysql>show binary logs;
 #查看binlog格式:
 mysql>show variables like 'binlog_format';
 #获取binlog文件列表:
 mysql>show binary logs;
 #查看当前正在写入的binlog文件:
 mysql>show master status;
 #查看master上的binlog:
 mysql>show master logs;
 #只查看第一个binlog文件的内容:
 mysql>show binlog events;
 #查看指定binlog文件的内容:
 mysql>show binlog events in 'mysql-bin.000045';
 #清空所有的bin-log:
 mysql>reset master;
 #生成一个新的binlog:
 mysql>flush logs;

用bash查看binlog日志

mysqlbinlog mysql-bin.000045

Docker安装

docker pull mysql:5.7 // 下载镜像
 docker images // 查看镜像
 // 运行mysql容器
 docker run -p 3306:3306 --name mysql \
 -v /mydata/mysql/log:/var/log/mysql \
 -v /mydata/mysql/data:/var/lib/mysql \
 -v /mydata/mysql/conf:/etc/mysql \
 -e MYSQL_ROOT_PASSWORD=root \
 -d mysql:5.7
 // 查看mysql是否运行
 docker ps

来源:华为云社区

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
1天前
|
关系型数据库 MySQL Linux
Linux下安装MySQL
Linux下安装MySQL
12 0
|
1天前
|
SQL 分布式计算 关系型数据库
Ubuntu上安装MySQL以及hive
Ubuntu上安装MySQL以及hive
13 1
|
1天前
|
关系型数据库 MySQL 数据库
mysqlTools 一分钟部署安装本mysql多个版本,解锁繁琐部署过程
mysqlTools 一分钟部署安装本mysql多个版本,解锁繁琐部署过程
141 2
|
1天前
|
关系型数据库 MySQL Linux
本地虚拟机centos7通过docker安装主从mysql5.7.21
本地虚拟机centos7通过docker安装主从mysql5.7.21
19 0
|
1天前
|
关系型数据库 MySQL 数据库
龙蜥操作系统上安装MySQL:步骤详解与常见问题解决
龙蜥操作系统上安装MySQL:步骤详解与常见问题解决
|
1天前
|
关系型数据库 MySQL Linux
在Centos7中:通过Docker安装MySQL5.7(保姆级)
在Centos7中:通过Docker安装MySQL5.7(保姆级)
120 0
|
1天前
|
编解码 安全 关系型数据库
祝福CSDN的小伙伴2024年快乐!Windows7安装MySQL
祝福CSDN的小伙伴2024年快乐!Windows7安装MySQL
|
1天前
|
关系型数据库 MySQL Linux
Linux CentOs7 安装Mysql(5.7和8.0版本)密码修改 超详细教程
Linux CentOs7 安装Mysql(5.7和8.0版本)密码修改 超详细教程
|
1天前
|
安全 关系型数据库 MySQL
MySQL安装教程
MySQL安装教程
33 0
|
1天前
|
SQL 关系型数据库 MySQL
【简单无脑】自动化脚本一键安装虚拟机下的MySQL服务
该文章提供了在虚拟机上安装MySQL服务的简化方法,特别是针对新手。作者提供了一个自动化脚本`install_mysql.sh`,使得安装过程更简单。用户需要下载`install.rpm`资源,将其放在指定目录下,然后创建并编辑脚本文件,将提供的代码粘贴进去,通过`chmod u+x`授权,最后运行脚本`./install_mysql.sh [rpm文件路径]`来安装MySQL。文章还附有相关图片说明。
30 1
【简单无脑】自动化脚本一键安装虚拟机下的MySQL服务