mysql 5.5.31 bundle_编译安装MySQL数据库5.7.31教程

文章目录

1.环境

2.安装准备

3.编译安装过程

4.补充:关于mysql添加用户,删除用户、给用户授权,设置用户密码等

1.环境

一台CentOS7.6.3的机器

2.安装准备

下载mysql-5.7.31源码包

1.登录网站https://dev.mysql.com/downloads/mysql/,如图:

5862be7ca5326be7ee00406891d73c16.png

2.选择Source Code

616907e8da43453b04bfde05182578d2.png

选择好后如下图展示:

db10652b0e23a13a2cdc2c4a63afb134.png

3.上图显示的都是8以上版本的,我们要下载5.7.31版本,所以继续走下去,点击红色方框的内容

0b9b0ed12e84c7c4354fe8656592b6aa.png

点击上图红色方框的内容之后,显示如下图,这时候就看到5.7.31版本了:

45f67b63c1851f917c2ead410116ccdd.png

4.选择好mysql版本之后我们还要选择与系统匹配的版本,如下图选择红色大箭头的那一列,我们的环境的CentOS7:

d7a1ac7a1d3bacf5659db37e44205942.png

选择好之后如下图,点击Download即可下载mysql-5.7.31的源码包:

bf386c66e23222a23df942c989b6023f.png

下载完之后将mysql-community-5.7.31-1.el7.src.rpm传到CentOS7.6.3机器上

安装mysql-community-5.7.31-1.el7.src.rpm:

[root@test2 ~]# rpm -ivh mysql-community-5.7.31-1.el7.src.rpm

#安装完后会在当前用户的家目录生成一个目录rpmbuild

我们需要的boost源码包跟mysql-5.7.31源码包都在在rpmbuild目录下的SOURCES目录下

[root@test2 ~/rpmbuild/SOURCES]# ll

total 153656

-rw-r–r-- 1 root root 70389425 Jun 2 19:26 boost_1_59_0.tar.bz2

-rwxr-xr-x 1 root root 160 Jun 2 19:26 filter-provides.sh

-rwxr-xr-x 1 root root 176 Jun 2 19:26 filter-requires.sh

-rw-r–r-- 1 root root 32525559 Jun 2 19:26 mysql-5.6.45.tar.gz

-rw-r–r-- 1 root root 54418341 Jun 2 17:18 mysql-5.7.31.tar.gz

3.编译安装过程

1.安装环境依赖包

[root@test2 ~/rpmbuild/SOURCES]# yun -y install ncurses ncurses-devel bison

还需要安装cmake,cmake看个人是用yum源的cmake,还是自己找高点的版本编译安装

因为搭建LNMP环境,如果使用php版本比极高的话,可能需要libzip,而安装libzip需要cmake,如果编译安装libzip的版本较高的话,yum源自带的cmake版本比较低可能会引起一些问题

2.创建用户

[root@test2 ~/rpmbuild/SOURCES]# useradd -s /sbin/nologin mysql

3.将安装包解压缩放在指定的目录中

[root@test2 ~/rpmbuild/SOURCES]# tar -jxvf boost_1_59_0.tar.bz2 -C /home/ops

如果你的机器没有安装bzip2,会报以下错误:

tar (child): bzip2: Cannot exec: No such file or directory

tar (child): Error is not recoverable: exiting now

tar: Child returned status 2

tar: Error is not recoverable: exiting now

解决办法:

[root@test2 ~/rpmbuild/SOURCES]# yum -y install bzip2

[root@test2 ~/rpmbuild/SOURCES]# tar -zxvf mysql-5.7.31.tar.gz -C /home/ops

4.将解压后的boost改名

[root@test2 ~/rpmbuild/SOURCES]# mv boost_1_59_0/ boost

5.安装软件依赖包

[root@test2 ~/rpmbuild/SOURCES]# yum -y install gcc gcc-c++

6.编译安装msyql

cd /home/ops/mysql-5.7.31/

[root@test2 /home/ops/mysql-5.7.31]# cmake

-DCMAKE_INSTALL_PREFIX=/home/ops/mysql

-DMYSQL_UNIX_ADDR=/home/ops/mysql/mysql.sock

-DSYSCONFDIR=/etc

-DSYSTEMD_PID_DIR=/home/ops/mysql

-DMYSQL_TCP_PORT=3306

-DDEFAULT_CHARSET=utf8

-DDEFAULT_COLLATION=utf8_general_ci

-DENABLED_LOCAL_INFILE=1

-DWITH_EXTRA_CHARSETS=1

-DEXTRA_CHARSETS=all

-DWITH_INNOBASE_STORAGE_ENGINE=1

-DWITH_ARCHIVE_STORAGE_ENGINE=1

-DWITH_BLACKHOLE_STORAGE_ENGINE=1

-DWITH_MYISAM_STORAGE_ENGINE=1

-DWITH_PERFSCHEMA_STORAGE_ENGINE=1

-DMYSQL_DATADIR=/home/ops/mysql/data

-DWITH_BOOST=/home/ops/boost

-DWITH_SYSTEMD=1

为了方便复制所以加了这段

cmake -DCMAKE_INSTALL_PREFIX=/home/ops/mysql -DMYSQL_UNIX_ADDR=/home/ops/mysql/mysql.sock -DSYSCONFDIR=/etc -DSYSTEMD_PID_DIR=/home/ops/mysql -DMYSQL_TCP_PORT=3306 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DENABLED_LOCAL_INFILE=1 -DWITH_EXTRA_CHARSETS=1 -DEXTRA_CHARSETS=all -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 -DMYSQL_DATADIR=/home/ops/mysql/data -DWITH_BOOST=/home/ops/boost -DWITH_SYSTEMD=1

-DCMAKE_INSTALL_PREFIX=/home/ops/mysql #指定安装路径

-DMYSQL_UNIX_ADDR=/home/ops/mysql/mysql.sock #mysql.sock文件生成路径,发起本地连接时使用

-DSYSCONFDIR=/etc#配置文件路径

-DSYSTEMD_PID_DIR=/home/ops/mysql#PID文件指定路径

-DMYSQL_TCP_PORT=3306 #msyql监听端口

-DDEFAULT_CHARSET=utf8 #指定默认字符集

-DDEFAULT_COLLATION=utf8_general_ci #校验字符,指定默认编码

-DENABLED_LOCAL_INFILE=1#允许从本地导入数据

-DWITH_EXTRA_CHARSETS=1#支持额外的字符集

-DEXTRA_CHARSETS=all#安装所有扩展字符集

-DWITH_INNOBASE_STORAGE_ENGINE=1 #安装innodb存储引擎

-DWITH_ARCHIVE_STORAGE_ENGINE=1#安装archive 存储引擎

-DWITH_BLACKHOLE_STORAGE_ENGINE=1 #安装blackhole存储引擎

-DWITH_MYISAM_STORAGE_ENGINE=1#安装myisam存储引擎

-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 #安装FEDERATED存储引擎

-DMYSQL_DATADIR=/home/ops/mysql/data #指定数据存放路径

-DWITH_BOOST=/home/ops/boost #boost库主要是在对mysql的数据备份时用到

-DWITH_SYSTEMD=1#这是MySQL 5.7原生支持Systemd的选项,如果要是用systemctl启动,就必须开启

报错1:

CMake Error at cmake/boost.cmake:88 (MESSAGE):

You can download it with -DDOWNLOAD_BOOST=1 -DWITH_BOOST=

This CMake script will look for boost in . If it is not there,

it will download and unpack it (in that directory) for you.

If you are inside a firewall, you may need to use an http proxy:

export http_proxy=http://example.com:80

Call Stack (most recent call first):

cmake/boost.cmake:174 (COULD_NOT_FIND_BOOST)

CMakeLists.txt:548 (INCLUDE)

-- Configuring incomplete, errors occurred!

See also "/home/wuyoupin/data/server/mysql-5.7.31/CMakeFiles/CMakeOutput.log".

See also "/home/wuyoupin/data/server/mysql-5.7.31/CMakeFiles/CMakeError.log".

原因:

-DWITH_BOOST=/home/hahaha/data/server/boost 这里的boost库路径指定不对

解决办法:

1.修正-DWITH_BOOST=boost库的路径,在第4步那里,boost_1_59_0目录被移动到哪里,就填哪里的绝对路径

2.重新cmake

报错2:

CMake Error at cmake/readline.cmake:71 (MESSAGE):

Curses library not found. Please install appropriate package,

remove CMakeCache.txt and rerun cmake.On Debian/Ubuntu, package name is libncurses5-dev, on Redhat and >derivates it is ncurses-devel.

Call Stack (most recent call first):

cmake/readline.cmake:102 (FIND_CURSES)

cmake/readline.cmake:195 (MYSQL_USE_BUNDLED_EDITLINE)

CMakeLists.txt:582 (MYSQL_CHECK_EDITLINE)

– Configuring incomplete, errors occurred!

See also “/home/ops/mysql-5.7.31/CMakeFiles/CMakeOutput.log”.

See also “/home/ops/mysql-5.7.31/CMakeFiles/CMakeError.log”.

原因:

缺少ncurses-devel支持包

解决:

yum -y install ncurses-devel

注意:如果在CMAKE的过程中有报错,当报错解决后,需要把源码目录中的CMakeCache.txt文件删除,然后再重新Cmake

7.编译安装

[root@test2 /home/ops/mysql-5.7.31]# make && make install #编译过程有点久,耐心等待咯

8.创建mysql数据文件存放目录,修改mysql工作目录的所有者跟所属组

[root@test2 /home/ops/mysql-5.7.31]# cd …/mysql

[root@test2 /home/ops/mysql]# mkdir data

[root@test2 /home/ops/mysql]# cd …

[root@test2 /home/ops]# chown -R mysql:mysql mysql

9.将配置声明到环境变量中

[root@test2 /home/ops]# vim /etc/profile

如下图:在export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL前面添加export PATH=$PATH:/home/ops/mysql/bin

f0a1f1b6053ff424005dadd6fb3968c7.png

注意:

/home/ops/mysql/bin这个路径视情况而定,另外export PATH=$PATH:/home/ops/mysql/bin添加的位置也不是固定的,可以添加到文件的其他地方,尽量添加到export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL的上面

[root@test2 /home/ops]# source /etc/profile

10.调整配置文件

[root@test2 /home/ops]# vim /etc/my.cnf

[client]

port=3306

socket=/home/ops/mysql/mysql.sock

[mysqld]

basedir=/home/ops/mysql

datadir=/home/ops/mysql/data

socket=/home/ops/mysql/mysql.sock

#Disabling symbolic-links is recommended to prevent assorted security risks

symbolic-links=0

#Settings user and group are ignored when systemd is used.

#If you need to run mysqld under a different user or group,

#customize your systemd unit file for mariadb according to the

#instructions in http://fedoraproject.org/wiki/Systemd

#skip-grant-tables

[mysqld_safe]

log-error=/home/ops/mysql/mysql-error.log

pid-file=/home/ops/mysql/mysql.pid

#include all files from the config directory

!includedir /etc/my.cnf.d

注意:如果编译安装mysql之后没有在/etc/目录下生成配置文件,直接新建一个,按自己需求添加配置就好了

11.初始化数据库

[root@test2 /home/ops]# cd mysql

[root@test2 /home/ops/mysql]# bin/mysqld

–initialize

–user=mysql

–basedir=/home/ops/mysql

–datadir=/home/ops/mysql/data/

下面一段是为了方便复制,就是初始化的命令

bin/mysqld --initialize --user=mysql --basedir=/home/ops/mysql --datadir=/home/ops/mysql/data/

初始化数据库输出信息:

2020-08-26T06:49:25.448942Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).

2020-08-26T06:49:26.475806Z 0 [Warning] InnoDB: New log files created, LSN=45790

2020-08-26T06:49:26.672309Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.

2020-08-26T06:49:26.736700Z 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: 4882c7d8-e768-11ea-b1ec-00163e0d400a.

2020-08-26T06:49:26.738847Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.

2020-08-26T06:49:27.043038Z 0 [Warning] CA certificate ca.pem is self signed.

2020-08-26T06:49:27.148709Z 1 [Note] A temporary password is generated for root@localhost: )dZfe<.n>

#本次初始化随机密码为:)dZfe<.n>

12.将service服务启动脚本放到systemd目录下执行

[root@test2 /home/ops/mysql]# cp /home/ops/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/

13.重新加载、启动服务、查看端口状态

[root@test2 /home/ops/mysql]# systemctl daemon-reload

[root@test2 /home/ops/mysql]# systemctl start mysqld

[root@test2 /home/ops/mysql]# netstat -ntap | grep 3306

tcp6 0 0 :::3306 :::* LISTEN 3103/mysqld

可以看到3306端口已经起来了,说明mysqld服务已经起来了

systemctl daemon-reload: 重新加载某个服务的配置文件,如果新安装了一个服务,归属于 systemctl 管理,要是新服务的服务程序配置文件生效,需重新加载。

14.连接数据库

[root@test2 /home/ops/mysql]# mysql -uroot -p’)dZfe<.n>

a74b47aa8d845ab09f45473d133ccecc.png

看到上面的页面说明mysql5.7.31编译安装成功了!

15.修改当前用户(root)密码

mysql> set password=password("123456");

Query OK, 0 rows affected, 1 warning (0.00 sec)

16.测试新密码

[root@test2 /home/ops/mysql]# mysql -uroot -p’123456’

1cfcfb23a5cf93597a1f94c0f4ecd25d.png

17.授权远程登录,并且设定root用户的权限

mysql> CREATE USER 'root'@'%' IDENTIFIED BY '123456';

Query OK, 0 rows affected (0.00 sec)

mysql> GRANT ALL ON *.* TO 'root'@'%';

Query OK, 0 rows affected (0.00 sec)

18.随便创建一个库,方便另一台机器远程测试

mysql> create database test;

189c192884e698ae2ea610537bfd2e03.png

#创建test库成功

19.远程登录测试,从另一台机器连接数据库

[root@test1 ]# mysql -uroot -h数据库所在的主机ip -p’123456’

fe3813cf7d616d3dbaa3a88cc574362d.png

测试成功!

4.补充:关于mysql添加用户,删除用户、给用户授权,设置用户密码等

1.创建用户

mysql> CREATE USER ‘username’@‘host’ IDENTIFIED BY ‘password’;

username 将要创建的用户名

host 指定该用户在哪个主机上可以登录,如果是本地用户则可以使用localhost,如果想要该用户可以从任意主机远程登录数据库服务器,则可以使用通配符%

password 将要创建的用户的密码,密码可以设置为空,如果为空则该用户不需要密码登录数据库服务器

实例:

CREATE USER 'test'@'localhost' IDENTIFIED BY '123456';

CREATE USER 'test1'@'192.168.0.0/255.255.0.0' IDENDIFIED BY '123456';

CREATE USER 'test3'@'%' IDENTIFIED BY '123456';

CREATE USER 'teest4'@'%' IDENTIFIED BY '';

CREATE USER 'test5'@'%';

2.授权

mysql> GRANT authority ON databasename.tablename TO ‘username’@‘host’;

authority 用户操作权限,如SELECt , INSERT , UPDATE 等,如果要授予用户所有的权限,则使用ALL表示

databasename 数据库名

tablename 表名

如果要授予用户对所有的数据库,所有的表都有相应的权限则可以用*表示。如*.*

实例:

GRANT SELECT, INSERT ON test.table1 TO 'test'@'%';

GRANT ALL ON *.* TO 'test1'@'%';

注意:用以上命令授权的用户不能给其他用户授权,如果想要让该用户也可以给其他用户授权,则用以下命令

GRANT authority ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION;

3.设置与更改用户密码

SET PASSWORD FOR 'username'@'host' = PASSWORD('newpassword');

如果是当前用户,则可以

SET PASSWORD = PASSWORD("newpassword");

4.撤销用户权限

REVOKE authority ON databasename.tablename FROM 'username'@'host';

假如你在给用户’test’@’%’授权的时候使用的是:GRANT SELECt ON test.user TO 'test'@'%';这种方式, 则在使用 REVOKE SELECT ON *.* FROM 'test'@'%';命令并不能撤销该用户对test数据库中user表的SELECt权限

相反的,如果授权使用的是GRANT SELECT ON *.* TO 'test'@'%';,则 REVOKE SELECT ON test.user FROM 'test'@'%';命令也不能撤销该用户对test数据库中user表的 Select 权限

5.查看用户权限

SHOW GRANTS FOR 'test'@'%';

6.删除用户

DROP USER 'username'@'host';

7.每一次操作后都要记得刷新数据库

flush privileges;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值