MySQL 5.7.19编译安装及简单配置方法

本文档讲述如何通过编译的方式安装MySQL5.7.19,并进行简单配置。需要服务器配置不低于2CPU,2G内存,20G硬盘,否则不一定能顺利安装。安装前需要cmake和boost两个组件,可在附件中下载。

mysql安装路径/usr/local,数据路径/mysql,root密码123456

下面进行依赖安装:

1,安装cmake

tar -xf cmake-3.5.2.tar.gz

cd cmake-3.5.2

./bootstrap

img

gmake

如果没有错误,将会是下面的提示:

img

gmake install

至此,cmake安装完成。

2,boost,安装时需指定路径(–prefix),默认路径能安装,但找不到。./b2 install安装时间很长。

tar -xf boost_1_59_0.tar.gz

cd boost_1_59_0

./bootstrap.sh –prefix=/usr/local/

如果没有错误,将会是下面的提示:

img

./b2 install

如果没有错误,将会是下面的提示:

img

3,安装依赖ncurses-devel,这里就用yum进行了。

yum install ncurses-devel -y

至此,依赖安装完成,下面开始mysql编译。

4,编译MySQL,但这里的编译是通过CMake而非configure进行的,指定boost的源码路径,这里很奇怪,必须先安装boost这里也要指定源码路径,否则失败。

参数说明:

-DCMAKE_INSTALL_PREFIX=安装路径

-DMYSQL_DATADIR=默认数据路径

-DSYSCONFDIR=配置文件路径

-DMYSQL_TCP_PORT=默认端口

-DMYSQL_UNIX_ADDR=socket路径

-DWITH_BOOST=boost源码路径

tar -xf mysql-boost-5.7.19.tar.gz

cd mysql-5.7.19

/usr/local/bin/cmake . -DCMAKE_INSTALL_PREFIX=/usr/mysql -DMYSQL_DATADIR=/mysql -DSYSCONFDIR=/etc -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_FEDERATED_STORAGE_ENGINE=1 -DMYSQL_TCP_PORT=3306 -DMYSQL_UNIX_ADDR=/mysql/mysql.sock -DENABLED_LOCAL_INFILE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_DEBUG=0 -DENABLE_PROFILING=1 -DWITH_BOOST=/root/lnmp/mysql/boost_1_59_0

如果没有错误,将会是下面的提示:

img

下面开始编译,编译过程较长。

make

如果没有错误,将会是下面的提示:

img

make install

如果没有错误,将会是下面的提示:

img

5,修改数据目录权限和复制启动脚本

useradd mysql

mkdir /mysql

chown -R mysql.mysql /mysql && chown -R mysql.mysql /usr/mysql

cp -a /usr/mysql/support-files/mysql.server /etc/init.d/mysqld

chmod +x /etc/init.d/mysqld

ln -s /usr/mysql/bin/mysql /usr/bin/mysql

chmod +x /usr/bin/mysql

6,初始化数据库,5.5版本后会自动生成过期的root密码,需配置跳过密码并修改为不过期。顺序:1,跳过验证;2,修改root密码;3,设置密码不过期。

cd /usr/mysql/bin

./mysqld –initialize –user=mysql

img

7,重置密码,并设置密码不过期。

在[mysqld]中增加下列字段,修改数据路径,并重启mysql

skip-grant-tables

img

如果没有错误,将会是下面的提示:

img

8,用空密码登录mysql。

img

9,修改root密码为不过期。

use mysql ;

update user set password_expired=’N’ where user=’root’;

10,修改密码,5.7已弃用passwd字段,UPDATE user SET password=PASSWORD(‘123456′) WHERE user=’root’;命令已无效,用下面的命令,另外,MySQL5.7默认无grant权限,所以要加with grant option参数。

update mysql.user set authentication_string=password(‘123456′) where user=’root’ and Host = ‘localhost’;

img

11,取消跳过密码认证,并重启数据库后配置可在网络登录的用户。mysql不允许在跳过密码时创建用户。

GRANT ALL PRIVILEGES ON . TO ‘root’@’%’IDENTIFIED BY ‘123456’ WITH GRANT OPTION;

img

未取消跳过密码时创建用户的错误提示。

img

12,配置mysql开机启动。

chkconfig mysqld on

至此mysql编译安装及简单配置完成。

Mysql查看数据量

任何查询均需进入information_schema数据库,命令

use information_schema;

1,查看总数据量

select concat(round(sum(data_length/1024/1024),2),’MB’) as data from tables;

2,查看某个数据库的数据量,此处为data数据库

select concat(round(sum(data_length/1024/1024),2),’MB’) as data from tables where table_schema=’data’;

3,查看某个表的数据量,此处为data数据库中的storage表

select concat(round(sum(data_length/1024/1024),2),’MB’) as data from tables where table_schema=’data’ and table_name=’storage’;

MySQL密码遗失处理方法

当前情况:已知linux root密码,mysql密码不知道,有程序运行不可更改root密码,想导出mysql的数据。

具体方法如下:

1,登录到服务器,修改mysql配置文件/etc/my.cnf,在[mysqld]段下增加skip-grant-tables,并重启mysql。

2,此时访问mysql不需要验证,使用mysql -uroot即可连接。

3,导出数据,这里以使用mysqldump导出data库到/mnt为例,linux命令为mysqldump -uroot data > /mnt/data.sql

4,导出数据后修改mysql配置文件/etc/my.cnf,删除或注释skip-grant-tables配置,并重启服务器,此时mysql恢复需要验证的状态。

这种方法涉及重启mysql,可能会造成程序运行异常。如果需要修改mysql密码,可在第2步后执行下列操作,序号接第2步:

3,进入mysql库,修改密码为123456,下面命令适用于5.7+版本。

use mysql;

update mysql.user set authentication_string=password(‘123456′) where user=’root’ and Host = ‘localhost’;

低于5.7版本可用下面命令:

use mysql;

UPDATE user SET password=PASSWORD(‘123456′) WHERE user=’root’;

4,导出数据后修改mysql配置文件/etc/my.cnf,删除或注释skip-grant-tables配置,并重启服务器,此时mysql恢复需要验证的状态。

MySQL主从复制配置

1,修改主库,开启bin-log,并设置server-id

[mysqld]

log-bin=mysql-bin #[必须]启用二进制日志

server-id=111 #[必须]服务器唯一ID

2,修改从库,并设置server-id

[mysqld]

log-bin=mysql-bin #[非必须]启用二进制日志

server-id=222 #[必须]服务器唯一ID

3,重启所有mysql

4,在主库上创建一用户,用于主从复制。

GRANT REPLICATION SLAVE ON . to ‘sync’@’localhost’ identified by ‘s93ejzTi7evTKtlGp3NH’;

flush privileges;

5,在主库上查看master状态,并记下File和Position,这两个值将作为主从复制的起始值。

show master status;

img

6,从库配置slave,master_log_file和master_log_pos分别对应上面查到的File和Postition

change master to master_host=’localhost’,

MASTER_PORT=3301,

master_user=’sync’,

master_password=’s93ejzTi7evTKtlGp3NH’,

master_log_file=’mysql-bin.000001′,

master_log_pos=337;

start slave;

7,从库查看主从状态,看到Slave_IO_Running和Slave_SQL_Running均为Yes,配置即完。其中有一个为No,则有问题。

show slave status;

img

nginx在ssl站点中报nginx:[warn] the “ssl” directive is deprecated, use the “listen … ssl” directive instead in错误

环境情况及具体表现:CentOS7 x86_64,nginx 1.15.0,启动nginx时有下列提示,但测试也可通过,服务能正常启动,也能访问。

img

[root@iz2ze6jjhwn5m83ygo2yo6z vhost]# /usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf

nginx: [warn] the “ssl” directive is deprecated, use the “listen … ssl” directive instead in /usr/local/nginx/conf/vhost/yapotpay.obgy.cn.conf:4

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok

nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

据查资料,这是nginx在1.15.0之后,ssl站点无需再写ssl on参数,将此参数注释后即可,该问题初次遇到,正在观察是否有其它问题。

京ICP备18006825号