centos6.9集合

centos6.9编译安装mysql-5.7.20

2017-12-17  本文已影响70人  马儿爱吃草

查看系统是否有默认mysql软件

rpm -qa|grep mysql

有的话先卸载mysql

rpm -e mysql-libs-5.1.73-8.el6_8.x86_64 --nodeps

创建一个组

groupadd mysql

创建一个用户,不允许登陆和不创主目录

useradd -s /sbin/nologin -g mysql -M mysql

创建目录

mkdir -p /usr/local/mysql
mkdir -p /www/data/mysql/data
mkdir -p /www/data/mysql/logs
mkdir -p /www/data/mysql/pids

MySQL从5.5版本开始,通过./configure进行编译配置方式已经被取消,取而代之的是cmake工具。

安装依赖

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

下载mysql-boost-5.7.20,带boost版

cd /usr/local/src
wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-boost-5.7.20.tar.gz

解压

tar zxvf mysql-boost-5.7.20.tar.gz
cd mysql-5.7.20

为了避免安装过程内存不足,导致安装失败,需要临时使用文件作为Swap分区来解决

# 创建要作为swap分区的文件:增加1GB大小的交换分区,则命令写法如下,其中的count等于想要的块的数量(bs*count=文件大小)
dd if=/dev/zero of=/tmp/swapfile bs=1M count=1024

# 格式化为交换分区文件,建立swap的文件系统
mkswap /tmp/swapfile

# 启用交换分区文件,启用swap文件
swapon /tmp/swapfile

进去解压的目录

cd /usr/local/src/mysql-5.7.20

使用cmake命令进行编译

cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/www/data/mysql/data \
-DMYSQL_UNIX_ADDR=/www/data/mysql/data/mysql.sock \
-DMYSQL_TCP_PORT=3306 \
-DSYSCONFDIR=/etc \
-DMYSQL_USER=mysql \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_EMBEDDED_SERVER=1 \
-DWITH_EDITLINE=bundled \
-DWITH_READLINE=1 \
-DENABLE_DOWNLOADS=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_DEBUG=0 \
-DENABLE_DTRACE=0 \
-DMYSQL_MAINTAINER_MODE=0 \
-DWITH_SSL:STRING=bundled \
-DWITH_ZLIB:STRING=bundled \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=./boost

检查完不报错之后,再执行

make

这里等待的时间非常久!!!!!

如果有报错,需要执行清理,没报错就忽略(注意)

make clean
rm -rf  CMakeCache.txt

make完成

[100%] Built target my_safe_process

安装

make install

编译完成之后,关掉Swap分区

swapoff /tmp/swapfile
rm /tmp/swapfile

编辑配置文件

vim /etc/my.cnf

配置内容

[client]
port = 3306
socket = /www/data/mysql/data/mysql.sock
default-character-set = utf8
[mysqld]
port = 3306
socket = /www/data/mysql/data/mysql.sock
basedir = /usr/local/mysql
datadir = /www/data/mysql/data
pid-file = /www/data/mysql/pids/mysql.pid
user = mysql
bind-address = 0.0.0.0
server-id = 1
init-connect = 'SET NAMES utf8'
character-set-server = utf8
#skip-name-resolve
#skip-networking
back_log = 300
max_connections = 1000
max_connect_errors = 6000
open_files_limit = 65535
table_open_cache = 128
max_allowed_packet = 4M
binlog_cache_size = 1M
max_heap_table_size = 8M
tmp_table_size = 16M
read_buffer_size = 2M
read_rnd_buffer_size = 8M
sort_buffer_size = 8M
join_buffer_size = 8M
key_buffer_size = 4M
thread_cache_size = 8
query_cache_type = 1
query_cache_size = 8M
query_cache_limit = 2M
ft_min_word_len = 4
log_bin = mysql-bin
binlog_format = mixed
expire_logs_days = 30
log_error = /www/data/mysql/logs/mysql-error.log
slow_query_log = 1
long_query_time = 1
slow_query_log_file = /www/data/mysql/logs/mysql-slow.log
performance_schema = 0
explicit_defaults_for_timestamp
#lower_case_table_names = 1
skip-external-locking
default_storage_engine = InnoDB
#default-storage-engine = MyISAM
innodb_file_per_table = 1
innodb_open_files = 500
innodb_buffer_pool_size = 64M
innodb_write_io_threads = 4
innodb_read_io_threads = 4
innodb_thread_concurrency = 0
innodb_purge_threads = 1
innodb_flush_log_at_trx_commit = 2
innodb_log_buffer_size = 2M
innodb_log_file_size = 32M
innodb_log_files_in_group = 3
innodb_max_dirty_pages_pct = 90
innodb_lock_wait_timeout = 120
bulk_insert_buffer_size = 8M
myisam_sort_buffer_size = 8M
myisam_max_sort_file_size = 10G
myisam_repair_threads = 1
interactive_timeout = 28800
wait_timeout = 28800
[mysqldump]
quick
max_allowed_packet = 16M
[myisamchk]
key_buffer_size = 8M
sort_buffer_size = 8M
read_buffer = 4M
write_buffer = 4M

将mysql添加到环境变量

vim ~/.bash_profile

修改文件中 PATH 一行,将/usr/local/mysql/bin/usr/local/mysql/lib加入到 PATH=$PATH:$HOME/bin 一行之后(注意以冒号分隔),如下

PATH=$PATH:$HOME/bin:/usr/local/php/bin:/usr/local/mysql/bin:/usr/local/mysql/lib

更新配置文件

source /etc/profile

环境变量

echo $PATH
# 如下
# /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/php/bin

启动mysql服务

# 将mysql服务文件拷贝到/etc/init.d/目录,并给出执行权限
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
# 开机自动启动
chmod +x /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig mysqld on

查看是否设置成功

chkconfig --list | grep mysqld

创建日志文件

touch /www/data/mysql/logs/mysql-error.log
touch /www/data/mysql/logs/mysql-slow.log
touch /www/data/mysql/pids/mysql.pid

更改目录权限

chown -R mysql:mysql /www/data/mysql

初始化数据库

注:
"–initialize"已废弃,生成一个随机密码(~/.mysql_secret)
"--initialize-insecure "不会生成密码
"–datadir"目录下不能有数据文件

查看下mysqld 状态

service mysqld status

删掉限制文件

rm /var/lock/subsys/mysql

删掉data文件

rm -rf /www/data/mysql/data
mkdir -p /www/data/mysql/data
chown -R mysql:mysql /www/data/mysql

初始化数据库

/usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/www/data/mysql/data

如果初始化发生错误,需要执行这些清理(注意)

rm -rf /www/data/mysql/data
mkdir -p /www/data/mysql/data
chown -R mysql:mysql /www/data/mysql

启动MySQL

service mysqld start

# Starting MySQL.                                            [  OK  ]

查看MySQL服务进程和端口

netstat  -pantu | grep 3306
ps  -elf  | grep  mysqld

mysql的其他命令

service mysqld start
service mysqld restart
service mysqld status
service mysqld stop

更改用户密码

# 连接MySQL
mysql -u root

# 查看数据库
mysql> show databases;

# 进入mysql库,查看用户表信息
mysql> use mysql
mysql> select host,user,authentication_string from user;

# 设置密码(推荐),注意此方法必须使用flush privileges命令刷新一下权限才能生效
mysql> UPDATE user SET authentication_string=PASSWORD('abc123456') WHERE user='root';

# 刷新一下权限
mysql> flush privileges;

# 退出
mysql> quit

重新连接测试

mysql -u root -p

# 输入刚才设置的密码回车即可,如下
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 5.7.20-log Source distribution

Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

END

上一篇 下一篇

猜你喜欢

热点阅读