centos7 mysql5.7.17_CentOS7编译安装MySQL5.7.17

先准备MySQL的安装包,可以去官网下载,也可以在其它镜像资源网站下载。

搜狐的http://mirrors.sohu.com/mysql/MySQL-5.7/。

MySQL5.7需要boost_1.59,指明了就这个版本的,其它版本不行。也可以下载包含boost的mysql:mysql-boost-5.7.X。

安装预装软件依赖包

yum -y install gcc gcc-c++ ncurses ncurses-devel cmake bison bison-devel

gcc我的系统已经自带安装了,cmake在yum里的版本有点低,我换了个高点的。这都没关系,不换也行。

cmake的安装

下载安装包: wget https://cmake.org/files/v3.7/cmake-3.7.1.tar.gz

解压:tar zvxf cmake-3.7.1.tar.gz;

进入解压包目录,ls以下,会看到有configure和bootstrap。执行./bootstrap,然后make && make install。

就这样就安装完cmake了。

安装MySQLcd /usr/local/src

tar -zvxf mysql-5.7.17.tar.gz

cd mysql-5.7.17

添加mysql运行组及用户、创建数据库数据文件文件夹并授予合适权限:

Trip:/bin/false是最严格的禁止login选项,一切服务都不能用,而/sbin/nologin只是不允许系统login,可以使用其他ftp等服务。如果想要用false在禁止login的同时允许ftp,则必须在/etc/shells里增加一行/bin/false。为了系统安全,这里建议使用/bin/false。groupadd mysql && useradd -g mysql mysql -s /bin/false

mkdir -p /data/mysql &&

chown -R mysql:mysql /data/mysql

预编译MySQLtar mysql-5.7.17.tar.gz

cd mysql-5.7.17

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \

-DMYSQL_DATADIR=/data/mysql \

-DWITH_BOOST=/usr/local/boost \

-DMYSQL_TCP_PORT=3306 \

-DSYSCONFDIR=/etc \

-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \

-DDEFAULT_CHARSET=utf8mb4 \

-DDEFAULT_COLLATION=utf8mb4_general_ci \

-DEXTRA_CHARSETS=all \

-DWITH_EXTRA_CHARSETS:STRING=all \

-DWITH_MYISAM_STORAGE_ENGINE=1 \

-DWITH_INNOBASE_STORAGE_ENGINE=1 \

-DWITH_DEBUG=0 \

-DENABLED_LOCAL_INFILE=1

然后等,我的服务器是1核1G的,等了一个半小时。如果配置高的话,速度会快些。

等预编译完成后,就开始安装。make

make install

设置启动脚本,开机自启动ls -lrt /usr/local/mysql

[root@xx mysql-5.7.17]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

[root@xx mysql-5.7.17]# chmod +x /etc/init.d/mysqld

[root@xx mysql-5.7.17]# systemctl enable mysqld

mysqld.service is not a native service, redirecting to /sbin/chkconfig.

Executing /sbin/chkconfig mysqld on

上面的意思是设置开机启动要用 chkconfig mysqld on。

设置配置文件

找mysql/support-files/my-default.cnf文件,复制移动到 /etc/下,重命名为 my.cnf,原来的可能是玛利亚DB的,可以备份或删掉。mv /etc/my.cnf /etc/my.cnf.bak

cp my-default.cnf /etc/my.cnf

开始正式设置配置文件,改my.cnf的内容[client]

port = 3306

socket = /usr/local/mysql/mysql.sock

[mysqld]

port = 3306

socket = /usr/local/mysql/mysql.sock

basedir = /usr/local/mysql

datadir = /data/mysql

pid-file = /data/mysql/mysql.pid

user = mysql

server-id = 1

大概我只设置了这么多其它的默认,以后要改要调整再来这里改。

添加mysql的环境变量echo -e '\n\nexport PATH=/usr/local/mysql/bin:$PATH\n' >> /etc/profile && source /etc/profile

意思就是在/etc/profile这个文件的最后添加PATH=/usr/local/mysql/bin:$PATH,然后执行 source /etc/profile。

初始化数据库mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql

启动数据库[root@xx mysql-5.7.17]# systemctl start mysqld

[root@xx mysql-5.7.17]# systemctl status mysqld

● mysqld.service - LSB: start and stop MySQL

Loaded: loaded (/etc/rc.d/init.d/mysqld)

Active: active (running) since 一 2016-07-18 11:15:35 CST; 8s ago

Docs: man:systemd-sysv-generator(8)

Process: 23927 ExecStart=/etc/rc.d/init.d/mysqld start (code=exited, status=0/SUCCESS)

CGroup: /system.slice/mysqld.service

├─23940 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql --pid-file=/data/mysql/mysql.pid

└─24776 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/data/mysql/mysql-err...

7月 18 11:15:32 snails systemd[1]: Starting LSB: start and stop MySQL...

7月 18 11:15:35 snails mysqld[23927]: Starting MySQL..[ OK ]

7月 18 11:15:35 snails systemd[1]: Started LSB: start and stop MySQL.

拷贝的别人的,大概就是这个样子。

查看MySQL服务进程和端口[root@xx mysql-5.7.17]# ps -ef | grep mysql

root 23940 1 0 11:15 ? 00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql --pid-file=/data/mysql/mysql.pid

mysql 24776 23940 0 11:15 ? 00:00:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/data/mysql/mysql-error.log --open-files-limit=65535 --pid-file=/data/mysql/mysql.pid --socket=/usr/local/mysql/mysql.sock --port=3306

[root@xx mysql-5.7.17]# netstat -tunpl | grep 3306

tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 24776/mysqld

设置数据库root用户密码

MySQL和Oracle数据库一样,数据库也默认自带了一个 root 用户(这个和当前Linux主机上的root用户是完全不搭边的),我们在设置好MySQL数据库的安全配置后初始化root用户的密码。配制过程中,一路输入 y 就行了。这里只说明下MySQL5.7.17版本中,用户密码策略分成低级 LOW 、中等 MEDIUM 和超强 STRONG 三种,推荐使用中等 MEDIUM 级别![root@xx mysql-5.7.17]# mysql_secure_installation

看提示,要你输入1或2或3。密码强度就是长度大于8位,大小写,数字,特殊符号之类的。看着选择,并设置密码就行。

将MySQL数据库的动态链接库共享至系统链接库

一般MySQL数据库还会被类似于PHP等服务调用,所以我们需要将MySQL编译后的lib库文件添加至当前Linux主机链接库 /etc/ld.so.conf.d/

下,这样MySQL服务就可以被其它服务调用了。[root@xx mysql-5.7.17]# ldconfig |grep mysql

[root@xx mysql-5.7.17]# echo "/usr/local/mysql/lib" > /etc/ld.so.conf.d/mysql.conf

[root@xx mysql-5.7.17]# ldconfig

[root@xx mysql-5.7.17]# ldconfig -v |grep mysql

ldconfig: 无法对 /libx32 进行 stat 操作: 没有那个文件或目录

ldconfig: 多次给出路径“/usr/lib”

ldconfig: 多次给出路径“/usr/lib64”

ldconfig: 无法对 /usr/libx32 进行 stat 操作: 没有那个文件或目录

/usr/lib64/mysql:

libmysqlclient.so.18 -> libmysqlclient.so.18.0.0

/usr/local/mysql/lib:

libmysqlclient.so.20 -> libmysqlclient.so.20.3.0

到这里已经差不多了,编译安装真的太累了。以后还是用yum安装。

如果要想设置远程访问数据库,记得设置防火墙,开放端口。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值