二进制方式搭建MySQL数据库5.7版本
前面是使用的yum的方式安装的MySQL数据库,在企业生产环境中大多数都用二进制方式安装。
本次使用二进制方式搭建MySQL 5.7.36版本。
1.二进制安装MySQL5.7版本
1.1.下载MySQL5.7版本的二进制文件
[root@mysql ~]# wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.36-linux-glibc2.12-x86_64.tar.gz
1.2.创建mysql用户管理MySQL服务
[root@mysql ~]# groupadd -r mysql
[root@mysql ~]# useradd -M -r -s /sbin/nologin -g mysql mysql
1.3.解压MySQL的二进制文件
MySQL的二进制文件是关于MySQL程序的文件,可以解压到/usr/local目录,针对MySQL的数据目录后续在/data目录中创建。
1.解压MySQL
[root@mysql ~]# tar xf mysql-5.7.36-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
[root@mysql ~]# mv /usr/local/mysql-5.7.36-linux-glibc2.12-x86_64 /usr/local/mysql
[root@mysql ~]# ll /usr/local/mysql
总用量 272
drwxr-xr-x 2 root root 4096 6月 30 11:08 bin
drwxr-xr-x 2 root root 55 6月 30 11:08 docs
drwxr-xr-x 3 root root 4096 6月 30 11:08 include
drwxr-xr-x 5 root root 230 6月 30 11:08 lib
-rw-r--r-- 1 7161 31415 259199 9月 7 2021 LICENSE
drwxr-xr-x 4 root root 30 6月 30 11:08 man
-rw-r--r-- 1 7161 31415 566 9月 7 2021 README
drwxr-xr-x 28 root root 4096 6月 30 11:08 share
drwxr-xr-x 2 root root 90 6月 30 11:08 support-files2.修改属主权限
[root@mysql ~]# chown -R mysql. /usr/local/mysql
1.4.配置MySQL服务的环境变量
由于是二进制部署的MySQL,相当于解压即用的,需要配置一个MySQL所部署路径的系统变量,让系统能够识别到我们部署的MySQL。
[root@mysql ~]# vim /etc/profile
export MYSQL_HOME=/usr/local/mysql
export PATH=$MYSQL_HOME/bin:$PATH
export LD_LIBRARY_PATH=:/usr/local/mysql/lib[root@mysql ~]# source /etc/profile
[root@mysql ~]# which mysql
/usr/local/mysql/bin/mysql
1.5.准备MySQL数据库的数据目录
[root@mysql ~]# mkdir /data/mysql
[root@mysql ~]# chown -R mysql. /data/mysql
2.初始化MySQL数据库
MySQL数据库在5.7版本之后对于密码的安全性进行了加强,有了强制的密码复杂度要求。
在MySQL初始化的时候可以根据不同的参数来决定是否忽略强制性的密码安全策略。
--initialize-insecure
:跳过MySQL的安全性密码策略,默认密码为空。--initialize
:使用MySQL默认的安全性密码策略,默认生成一个复杂密码。
[root@mysql ~]# mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql
2022-06-30T05:31:18.754435Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2022-06-30T05:31:22.091833Z 0 [Warning] InnoDB: New log files created, LSN=45790
2022-06-30T05:31:22.632855Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2022-06-30T05:31:22.736073Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: e0a2c0cc-f835-11ec-8a3c-005056b791aa.
2022-06-30T05:31:22.757080Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2022-06-30T05:31:23.549953Z 0 [Warning] A deprecated TLS version TLSv1 is enabled. Please use TLSv1.2 or higher.
2022-06-30T05:31:23.549978Z 0 [Warning] A deprecated TLS version TLSv1.1 is enabled. Please use TLSv1.2 or higher.
2022-06-30T05:31:23.550948Z 0 [Warning] CA certificate ca.pem is self signed.
2022-06-30T05:31:23.730924Z 1 [Warning] root@localhost is created with an empty password ! Please consider switching off the --initialize-insecure option.
初始化完成后会在数据目录创建出默认系统数据库的文件。
[root@mysql ~]# ll /data/mysql/
总用量 110660
-rw-r----- 1 mysql mysql 56 6月 30 13:31 auto.cnf
-rw------- 1 mysql mysql 1680 6月 30 13:31 ca-key.pem
-rw-r--r-- 1 mysql mysql 1112 6月 30 13:31 ca.pem
-rw-r--r-- 1 mysql mysql 1112 6月 30 13:31 client-cert.pem
-rw------- 1 mysql mysql 1680 6月 30 13:31 client-key.pem
-rw-r----- 1 mysql mysql 436 6月 30 13:31 ib_buffer_pool
-rw-r----- 1 mysql mysql 12582912 6月 30 13:31 ibdata1
-rw-r----- 1 mysql mysql 50331648 6月 30 13:31 ib_logfile0
-rw-r----- 1 mysql mysql 50331648 6月 30 13:31 ib_logfile1
drwxr-x--- 2 mysql mysql 4096 6月 30 13:31 mysql
drwxr-x--- 2 mysql mysql 8192 6月 30 13:31 performance_schema
-rw------- 1 mysql mysql 1680 6月 30 13:31 private_key.pem
-rw-r--r-- 1 mysql mysql 452 6月 30 13:31 public_key.pem
-rw-r--r-- 1 mysql mysql 1112 6月 30 13:31 server-cert.pem
-rw------- 1 mysql mysql 1680 6月 30 13:31 server-key.pem
drwxr-x--- 2 mysql mysql 8192 6月 30 13:31 sys
3.准备MySQL的配置文件
手动编写一个MySQL配置文件。
[root@mysql ~]# vim /etc/my.cnf
[mysqld]
basedir=/usr/local/mysql #MySQL的安装路径
datadir=/data/mysql #MySQL的数据路径
socket=/tmp/mysql.sock
log_error=/data/mysql/mysql_err.log #MySQL错误日志路径
user=mysql #MySQL的管理用户
port=3306 #MySQL端口号
character-set-server=utf8[mysql]
socket=/tmp/mysql.sock[client]
socket=/tmp/mysql.sock
4.编写MySQL服务管理脚本
[root@mysql ~]# vim /etc/systemd/system/mysqld.service
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000
如果不准备MySQL的服务管理脚本,就按如下目录启动或者重启。
mysqladmin -uroot -p shutdown
/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql &#使用mysqladmin关闭数据可以等事务执行完毕后再关闭数据库。
5.启动MySQL数据库
1.启动mysql
[root@mysql ~]# systemctl daemon-reload
[root@mysql ~]# systemctl start mysqld2.查看端口号
[root@mysql ~]# netstat -lnpt | grep mysql
tcp6 0 0 :::3306 :::* LISTEN 11130/mysqld 3.查看进程
[root@mysql ~]# ps aux | grep mysql
mysql 11130 0.7 2.5 1119116 180048 ? Ssl 13:57 0:00 /usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
6.登录MySQL数据库
1)为MySQL的root用户设置一个密码。
[root@mysql ~]# mysqladmin -u root password 123456
2)登录数据库。
[root@mysql ~]# mysql -uroot -p123456
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)mysql> create database db_1;
Query OK, 1 row affected (0.00 sec)
7.MySQL数据库中的错误日志管理
错误日志也是MySQL数据库种最重要的日志之一,记录了MySQL服务的启动和停止以及服务运行过程中出现的报错信息,当数据库出现故障时,可以首先查看错误日志来分析问题。
MySQL中的错误日志路径是根据log_error变量定义的。
mysql> show variables like 'log_error';
+---------------+---------------------------+
| Variable_name | Value |
+---------------+---------------------------+
| log_error | /data/mysql/mysql_err.log |
+---------------+---------------------------+
修改错误日志的路径主要在主配置文件中进行修改。