目录
编译安装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
/usr/lib64’ given more than once
ldconfig: Path
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用户退出]