编译安装mysql5.7

目录

编译安装mysql5.7

一 、 准备:

(1)系统没有cmake命令,于是yum install -y cmake 进行安装

# yum install -y cmake

(2)下载mysql-5.7.17.tar.gz到/usr/local/src下,并解压到目录

  # tar zxvf mysql-5.7.17.tar.gz

二 、 安装:

(1)进入目录

  # cd mysql-5.7.17

(2)执行cmake命令(红字部分根据自己需要修改)

 cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/data/mysql \
-DMYSQL_USER=mysql \
-DSYSCONFDIR=/usr/local/mysql \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DWITH_EMBEDDED_SERVER=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DMYSQL_TCP_PORT=3306 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci

报错:

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

原因分析:
没有boost包

解决方法:
1、在预编译时添加相应的选项:

cmake . -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/boost

重新执行编译命令

cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/data/mysql \
-DMYSQL_USER=mysql \
-DSYSCONFDIR=/usr/local/mysql \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DWITH_EMBEDDED_SERVER=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DMYSQL_TCP_PORT=3306 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/usr/local/boost

2、或者下载一个boost包,放到/usr/local/boost目录下

DWITH_BOOST=/usr/local/boost

然后在cmake后面加选项

# cmake .  -DWITH_BOOST=/usr/local/boost

(3)编译源码

  # make && make install

三 、 配置

(1)编译完成,安装好之后
新建系统用户mysql

  # useradd -s /sbin/nologin -M mysql

建立数据库存放目录

  # mkdir -p /data/mysql
  #chown -R mysql /data/mysql

检查权限并初始化MySQL系统授权表
在MySQL安装目录的\bin\路径下,检查权限 参数user表示用户,basedir表示mysql的安装路径,datadir表示数据库文件存放路径 以root初始化操作时要加–user=mysql参数,生成一个随机密码(注意保存登录时用):

  #  cd /usr/local/mysql
  #  bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql

2017-08-07T08:30:18.242711Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use –explicit_defaults_for_timestamp server option (see documentation for more details).
2017-08-07T08:30:18.760949Z 0 [Warning] InnoDB: New log files created, LSN=45790
2017-08-07T08:30:18.871274Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2017-08-07T08:30:18.936705Z 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: a54ff6b4-7b4a-11e7-962c-00163e2cd981.
2017-08-07T08:30:18.938888Z 0 [Warning] Gtid table is not ready to be used. Table ‘mysql.gtid_executed’ cannot be opened.
2017-08-07T08:30:18.939355Z 1 [Note] A temporary password is generated for root@localhost: 9k7eyeS

mv /etc/my.cnf /etc/my.cnf.bak

进入mysql的安装目录支持文件目录

cd /usr/local/mysql/support-files

拷贝配置文件模板为新的mysql配置文件,

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

可按需修改新的配置文件选项, 不修改配置选项, mysql则按默认配置参数运行.

#vim /etc/my.cnf
[mysqld]
basedir=/usr/local/mysql
datadir=/data/mysql
pid-file = /data/mysql/mysql.pid
port=3306
character_set_server=utf8mb4
log-error = /data/mysql/mysql-error.log
slow_query_log = 1
slow_query_log_file = /data/mysql/mysql-slow.log
long_query_time = 1
log-queries-not-using-indexes
max_connections = 1024
back_log = 128
wait_timeout = 100
interactive_timeout = 200
key_buffer_size=256M
query_cache_size = 256M
query_cache_type=1
query_cache_limit=50M
max_connect_errors=20
sort_buffer_size = 2M
max_allowed_packet=16M
join_buffer_size=2M
thread_cache_size=200
innodb_buffer_pool_size = 2048M
innodb_flush_log_at_trx_commit = 1
innodb_log_buffer_size=32M
innodb_log_file_size=128M
innodb_log_files_in_group=3
server_id=1
log-bin=mysql-bin
binlog_cache_size=2M
max_binlog_cache_size=8M
max_binlog_size=512M
expire_logs_days=7
read_buffer_size=1M
read_rnd_buffer_size=16M
bulk_insert_buffer_size=64M

执行完后,可以通过
ls -lrt /data/mysql/data/命令查看是否生成了MySQL自身的数据库文件。

(3)创建MySQL日志存放目录以及设置开机启动
下面配置的MySQL日志存放目录以及权限都是根据前面my.cnf文件写的,也就是两者需要保持一致。
文件夹属主属组必须是mysql,否则mysql没有权限写入。

chown -R mysql:mysql /data/mysql

在完成上面的操作后,就可以正式使用MySQL服务了。
(/etc/my.cnf写完以后)

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

  # chmod 755 /etc/init.d/mysqld

  # vim /etc/init.d/mysqld

  # chkconfig --add mysqld

  # chkconfig mysqld on

设置MySQL在345等级自动启动

chkconfig --level 345 mysqld on

启动MySQL进程服务的命令如下:

/etc/init.d/mysqld start

我的这个过程没有出现太大问题,主要注意点就是
a.在cmake的时候配置好目录,以免和自己的路径不一样;
b./etc/my.cnf的内容,如果有就直接拷贝,如果没有就按上面的写入、保持就行了。

(4)将MySQL数据库的动态链接库共享至系统链接库
一般MySQL数据库还会被类似于PHP等服务调用,所以我们需要将MySQL编译后的lib库文件添加至当前 Linux主机链接库/etc/ld.so.conf.d/下,这样MySQL服务就可以被其它服务调用了。
echo “/usr/local/mysql/lib” > /etc/ld.so.conf.d/mysql.conf
ldconfig [使生效]
ldconfig -v |grep mysql [查看效果]

ldconfig: Can’t stat /libx32: No such file or directory
ldconfig: Path /usr/lib' given more than once
ldconfig: Path
/usr/lib64’ given more than once
ldconfig: Can’t stat /usr/libx32: No such file or directory
/usr/lib64/mysql:
libmysqlclient.so.18 -> libmysqlclie nt.so.18.0.0
/usr/local/mysql/lib:
libmysqlclient.so.20 -> libmysqlclient_r.so.20.0.0

我的执行结果:
[root@vbox-xuniji1 mysql]# ldconfig
[root@vbox-xuniji1 mysql]# ldconfig -v |grep mysql /usr/local/mysql/lib: libmysqlclient.so.20 -> libmysqlclient.so.20.0.9
[root@vbox-xuniji1 mysql]#

(5)创建其它MySQL数据库用户 使用MySQL数据库root管理员用户登录MySQL数据库后,可以管理数据库和其他用户了。
这里演示创建一个名为mysqltest的MySQL用户(密码为@mysqltest2015.A)和一个名为mysqltest的数 据库。
mysql -uroot -p密码 登录成功后,创建mysqltest数据库,并设置字符集和字符集
mysql> CREATE DATABASE mysqltest DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; 11/11
Query OK, 1 row affected (0.00 sec)
创建名为mysqltest用户,并让它拥有mysqltest数据库所有的权限
mysql> grant all privileges on mysqltes.* to mysqltes@localhost identified by ‘@mysqltest2015.A’;
Query OK, 0 rows affected, 1 warning (0.01 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> exit;
[创建完毕,root用户退出]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值