Centos deploy MySQL 5.7

First, prepare the environment

A server, download source packages I provide, and uploaded to the server.

Second, the deployment to install MySQL

1, install gcc

[root@mysql ~]# yum -y install gcc*

2, unloading mariadb

[root@mysql ~]# yum -y erase mariadb
[root@mysql ~]# rpm -e mariadb-libs-5.5.56-2.el7.x86_64 --nodeps

3, install cmake

[root@mysql src]# tar zxf cmake-3.13.4.tar.gz 
[root@mysql src]# cd cmake-3.13.4/
[root@mysql cmake-3.13.4]# ./bootstrap 
[root@mysql cmake-3.13.4]# gmake && gmake install

4, install ncurses

[root@mysql cmake-3.13.4]# cd ../
[root@mysql src]# tar zxf ncurses.tar.gz
[root@mysql src]# cd ncurses-6.1/
[root@mysql ncurses-6.1]# ./configure && make && make install

5, the installation bison

[root@mysql src]# tar zxf bison-3.3.tar.gz 
[root@mysql src]# cd bison-3.3/
[root@mysql bison-3.3]# ./configure && make && make install

6, install boost

[root@mysql src]# tar zxf boost_1_59_0.tar.gz 
[root@mysql src]# mv boost_1_59_0 /usr/local/boost

7, create the required MySQL user and directory

[root@mysql src]# useradd -r -M -s /sbin/nologin mysql
[root@mysql src]# mkdir /usr/local/mysql
[root@mysql src]# mkdir /usr/local/mysql/data

8, installation and initialization MySQL

#安装MySQL
[root@mysql src]# tar zxf mysql-5.7.24.tar.gz 
[root@mysql src]# cd mysql-5.7.24/
[root@mysql mysql-5.7.24]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DSYSCONFDIR=/etc -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=all -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock -DWITH_PARTITION_STORAGE_ENGINE=1 -DWITH_SYSTEMD=1 -DWITH_BOOST=/usr/local/boost && make && make install
#配置环境变量
[root@mysql mysql-5.7.24]# echo 'export PATH=$PATH:/usr/local/mysql/bin' >> /etc/profile
[root@mysql mysql-5.7.24]# . /etc/profile
[root@mysql mysql-5.7.24]# cd /usr/local/mysql/
[root@mysql mysql]# chown -R mysql.mysql .   #更改当前目录下的属主及属主
#进行初始化
[root@mysql mysql]# bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

When the initialization operation, in the last line of the return information will be displayed with the MySQL database root user's password, there may not be displayed, it shows that the root user has no password, the password I shown here as follows (this password needs to be copied to a the text, one would need to use to change the password, if the password is lost, need to re-initialize MySQL, steps to re-initialize directory: delete / usr / local / mysql / all files and directories under the data directory before they can re-initialize successfully ):

Centos deploy MySQL 5.7

9, configure and start MySQL

#再次修改当前目录下的属组及属主(初始化后,产生的一些文件)
[root@mysql mysql]# chown -R mysql.mysql .
#编写MySQL的主配置文件
[root@mysql mysql]# vim /etc/my.cnf     #默认打开是个空文件,编写以下内容

[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port=3306
server_id=1   #当架构中存在多个MySQL服务器,那么这个server_id就是各个MySQL数据库的唯一性。
socket=/usr/local/mysql/mysql.sock
log-error=/usr/local/mysql/data/mysqld.err
#复制其服务脚本并启动MySQL
[root@mysql mysql]# cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system
[root@mysql mysql]# systemctl enable mysqld.service 
[root@mysql mysql]# systemctl start mysqld.service

When executing the start command, will certainly be an error, the error message is as follows:

Centos deploy MySQL 5.7

By MySQL error log, locate the problem, as follows:

[root@mysql mysql]# tail data/mysqld.err      #查看错误日志,找到error字段
2019-12-02T13:31:25.799322Z 0 [Note] InnoDB: 5.7.24 started; log sequence number 2591440
2019-12-02T13:31:25.799512Z 0 [Note] Plugin 'FEDERATED' is disabled.
2019-12-02T13:31:25.802747Z 0 [Warning] Failed to set up SSL because of the following SSL library error: SSL context is not usable without certificate and private key
2019-12-02T13:31:25.802760Z 0 [Note] Server hostname (bind-address): '*'; port: 3306
2019-12-02T13:31:25.802794Z 0 [Note] IPv6 is available.
2019-12-02T13:31:25.802802Z 0 [Note]   - '::' resolves to '::';
2019-12-02T13:31:25.802811Z 0 [Note] Server socket created on IP: '::'.
2019-12-02T13:31:25.803063Z 0 [Note] InnoDB: Loading buffer pool(s) from /usr/local/mysql/data/ib_buffer_pool
2019-12-02T13:31:25.803985Z 0 [Note] InnoDB: Buffer pool(s) load completed at 191202 21:31:25
2019-12-02T13:31:25.804236Z 0 [ERROR] Can't start server: can't check PID filepath: No such file or directory
#就在最后一行,提示没有PID filepath的文件或目录

Solution is as follows:

Modify its service control script specified path to PID, as follows:

[root@mysql mysql]# vim /usr/lib/systemd/system/mysqld.service   #编辑此文件
PIDFile=/usr/local/mysql/mysqld.pid    #修改此行
ExecStart=/usr/local/mysql/bin/mysqld --daemonize --pid-file=/usr/local/mysql/mysqld.pid $MYSQLD_OPTS
#修改此行,都是修改的pid路径

10, to determine the MySQL database starts successfully

#重新加载配置文件
[root@mysql mysql]# systemctl daemon-reload 
#重启MySQL
[root@mysql mysql]# systemctl restart mysqld
#确定端口在监听
[root@mysql mysql]# netstat -antp | grep 3306
tcp6       0      0 :::3306                 :::*                    LISTEN      106760/mysqld       

11, restart the MySQL root password

#修改密码为123.com
[root@mysql mysql]# mysqladmin -u root -p password '123.com'
Enter password:        #这里输入初始化MySQL后返回的密码
#执行成功后,会输出一些warning类的提示信息,无关紧要的,是提示直接将新密码暴露在了终端,不安全。
#使用新密码进行登录MySQL进行测试
[root@mysql mysql]# mysql -u root -p123.com

Additional: Basic MySQL statement

mysql> show databases;         #查询所有库
mysql> show schemas;           #同上
mysql> create database ljz_db;      #创建一个名为ljz_db的库
mysql> use ljz_db;          #切换至新建的库
mysql> create table ljz_table(id int);          #创建一个表,只有一个id列
mysql> insert into ljz_table values(24);      #表中插入数据
mysql> selectl * from ljz_table;        #查询表中的数据
mysql> show create database ljz_db;       #查看库的详细信息
mysql> select database();          #查询当前所在库
mysql> drop database ljz_db;          #删除库

-------- end of this article so far, thanks for reading --------

Guess you like

Origin blog.51cto.com/14154700/2455519