centos install mysql 5.7.22

官网文档5.7

1 安装系统软件

yum -y install gcc gcc-c++ autoconf automake zlib* fiex* libxml* ncurses-devel libmcrypt* libtool-ltdl-devel* make cmake
yum -y install gcc gcc-c++ make cmake bison-devel ncurses-devel

1.1 安装文件准备
下载 cmake-3.8.1.tar.gz 源码发布包
http://www.cmake.org/download/
wget https://cmake.org/files/v3.8/cmake-3.8.1.tar.gz

tar -zxvf cmake-3.8.1.tar.gz
cd cmake-3.8.1
./bootstrap
make
make install

下载 ncurses-6.0.tar.gz
ftp://ftp.gnu.org/gnu/ncurses/
wget ftp://ftp.gnu.org/gnu/ncurses/ncurses-6.0.tar.gz

下载 m4-1.4.18.tar.gz
wget http://mirrors.kernel.org/gnu/m4/m4-1.4.18.tar.gz

下载 bison-3.0.4.tar.gz
http://ftp.gnu.org/gnu/bison/
wget http://ftp.gnu.org/gnu/bison/bison-3.0.4.tar.gz

下载 boost_1_59_0.tar.gz
wget https://jaist.dl.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz

相关依赖包的作用
cmake:由于从 MySQL5.5 版本开始弃用了常规的 configure 编译方法,所以需要 CMake 编译器,用于设置 mysql 的编译参数。如:安装目录、数据存放目录、字符编码、排序规则等。
Boost:#从 MySQL 5.7.5 开始 Boost 库是必需的,mysql 源码中用到了 C++的 Boost 库,要求必须安装 boost1.59.0 或以上版本
GCC:是 Linux 下的 C 语言编译工具,mysql 源码编译完全由 C 和 C++编写,要求必须安装GCC
bison:Linux 下 C/C++语法分析器
ncurses:字符终端处理库

2 下载mysql源码

2.1 mysql官网下载mysql-5.7.22.tar.gz
wget https://cdn.mysql.com/Downloads/MySQL-5.7/mysql-5.7.22.tar.gz

2.2 或者从github上下载mysql源码
git clone https://github.com/mysql/mysql-server.git

3 编译mysql源码

3.1 添加mysql用户

groupadd mysql
useradd -r -g mysql mysql
 or  useradd -r -g mysql -s /bin/bash mysql -d /home/mysql -m

3.2 创建mysql安装程序的目录和数据文件的目录

mkdir /usr/local/mysql
mkdir /home/mysql/data
chown -R mysql.mysql /usr/local/mysql
chown -R mysql.mysql /home/mysql/data

3.3 解压缩mysql 5.7.22源码,并编译

tar -zxvf mysql-5.7.22.tar.gz
cd mysql-5.7.22
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/data/mysql \
-DSYSCONFDIR=/etc \
-DWITH_INNOBASE_STORAGE_ENGINE=1\
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock \
-DMYSQL_TCP_PORT=3306 \
-DENABLED_LOCAL_INFILE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/usr/local/boost_1_59_0 \
-DWITH_EMBEDDED_SERVER=1

其中boost 无需编译安装,仅需设置为解压后目录即可,如:DWITH_BOOST=/usr/local/boost_1_59_0
编译手册

编译并安装

[root@szlinux02 mysql-5.7.18]# make -j `grep processor /proc/cpuinfo | wc -l`
[root@szlinux02 mysql-5.7.18]# make install
-j 参数表示根据 CPU 核数指定编译时的线程数,可以加快编译速度。默认为 1 个线程编译。  

or

make
make install

4 安装配置MySQL

4.1 初始化mysql数据库

MySQL 5.7.6之前的版本执行这个脚本初始化系统数据库
./bin/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql
5.7.6之后版本初始系统数据库脚本

cd /usr/local/mysql
./bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql
./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/home/mysql/data  

注意: MySQL之前版本mysql_install_db是在mysql_basedir/script下,MySQL 5.7直接放在了mysql_basedir/bin目录下。
"--initialize"已废弃,生成一个随机密码(~/.mysql_secret)
"--initialize-insecure"不会生成密码
"--datadir"目录下不能有数据文件
[root@szlinux02 mysql]# ./bin/mysql_ssl_rsa_setup

4.2 配置文件

###查看cnf配置文件,一般mysql会去这3个地方找配置文件: /etc/mysql/my.cnf /etc/my.cnf ~/.my.cnf

从左到右查找,找到就停止

vi /etc/my.cnf

[client]
port=3306
socket=/usr/local/mysql/mysql.sock

[mysqld]
port=3306
socket=/usr/local/mysql/mysql.sock
pid-file=/home/mysql/data/mysql.pid
basedir=/usr/local/mysql
datadir=/home/mysql/data
explicit_defaults_for_timestamp=true

查看编码SHOW VARIABLES LIKE 'character%'

4.3 配置mysql服务

cp support-files/mysql.server /etc/init.d/mysql 
chkconfig --add mysql  #安装服务
chkconfig mysql on    #开机启动 

shell> service mysql start   # 启动mysql服务  
shell> service mysql stop    # 停止mysql服务  
shell> service mysql restart # 重新启动mysql服务

4.4 把安装目录添加到环境变量中

echo "export PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
source /etc/profile

4.5 本地登录

mysql -uroot -p临时密码 修改密码:

SET PASSWORD = PASSWORD(‘your new password‘);
--ALTER USER ‘root‘@‘localhost‘ PASSWORD EXPIRE NEVER;
flush privileges;

4.6 远程登录:

grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;
flush privileges;

4.7 配置防火墙

防火墙的3306端口默认没有开启,若要远程访问,需要开启这个端口

centos 7.x 开启端口 
[root@localhost mysql]# firewall-cmd --zone=public --add-port=3306/tcp --permanent
success
[root@localhost mysql]# firewall-cmd --reload
success
[root@localhost mysql]#

5 问题收集

5.1 问题:

Starting MySQL..The server quit without updating PID file ([FAILED]/mysql/Server03.mylinux.com.pid).
解决:
修改/etc/my.cnf 中datadir,指向正确的mysql数据库文件目录

5.2 问题:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
解决:
新建一个链接或在mysql中加入-S参数,直接指出mysql.sock位置。
ln -s /usr/local/mysql/data/mysql.sock /tmp/mysql.sock

5.3 mysqld --initialize

[root@g3 mysql]# ./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/home/mysql/data
2018-05-19T03:03:44.599905Z 0 [Warning] InnoDB: New log files created, LSN=45790
2018-05-19T03:03:44.651969Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2018-05-19T03:03:44.723910Z 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: 3dfb1ca5-5b11-11e8-ae4d-0800273a6168.
2018-05-19T03:03:44.726301Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2018-05-19T03:03:44.727685Z 1 [Note] A temporary password is generated for root@localhost: Mv=Y.=Dr&5Cw
[root@g3 mysql]#
  • qq_43638135
    妲己再美究为妃: 博主没有想过自己接一些私活干吗?我现在还没毕业,但是我也确实听说外挂市场自动化游戏脚本市场挺火热的,并且报酬也很丰厚,但是具体的我也不是很清楚,求解答。 (1个月前 #47楼) 查看回复(2) 举报 回复
    22