目录
五、创建单实例数据、日志等文件存放路径,如下树形结构,并更改所属组用户
六、初始化MySQL[ 初始化完成后会自带随机密码在输出日志中 ]
一、下载(mysql-5.7.16.tar.gz)
cd /data/soft/
解压
tar -xvf mysql-5.7.16.tar.gz
二、yum安装相关扩展工具
yum -y install make gcc-c++ cmake bison bison-devel ncurses-devel
yum -yinstalllibaio libaio-devel perl-Data-Dumper net-tools screen
三、下载解压mysql-5.7.16.tar.gz
Boost库是一个经过千锤百炼、可移植、提供源代码的C++库,作为标准库的后备,是C++标准化进程的发动机之一。
mv /root/boost_1_59_0.tar.bz2 /data/soft
tar -jxvf boost_1_59_0.tar.bz2
mv boost_1_59_0 /usr/local/
四、编译安装MySQL
cd /data/soft/mysql-5.7.16
cmake -DCMAKE_INSTALL_PREFIX=/data/mysql-5.7.16 -DMYSQL_DATADIR=/data/mysql-5.7.16/data -DSYSCONFDIR==/data/mysql-5.7.16/etc -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MYISAM_STORAGE_ENGINE=1 -DMYSQL_UNIX_ADDR=/data/mysql-5.7.16/etc/mysql.sock -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DDEFAULT_COLLATION=utf8mb4_general_ci -DWITH_READLINE=1 -DMYSQL_TCP_PORT=3306 -DENABLED_LOCAL_INFILE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8mb4 -DENABLE_DOWNLOADS=1 -DWITH_BOOST=/usr/local/boost_1_59_0
#参数说明
参数值说明 |
配置选项 |
CMake选项 |
安装根目录 |
--prefix=/usr |
-DCMAKE_INSTALL_PREFIX=/usr |
mysqld目录 |
--libexecdir=/usr/sbin |
-DINSTALL_SBINDIR=sbin |
数据存储目录 |
--localstatedir=/var/lib/mysql |
-DMYSQL_DATADIR=/var/lib/mysql |
配置文件(my.cnf)目录 |
--sysconfdir=/etc/mysql |
-DSYSCONFDIR=/etc/mysql |
插件目录 |
--with-plugindir=/usr/lib64/mysql/plugin |
-DINSTALL_PLUGINDIR=lib64/mysql/plugin |
手册文件目录 |
--mandir=/usr/share/man |
-DINSTALL_MANDIR=share/man |
共享数据目录 |
--sharedstatedir=/usr/share/mysql |
-DINSTALL_SHAREDIR=share |
Library库目录 |
--libdir=/usr/lib64/mysql |
-DINSTALL_LIBDIR=lib64/mysql |
Header安装目录 |
--includedir=/usr/include/mysql |
-DINSTALL_INCLUDEDIR=include/mysql |
信息文档目录 |
--infodir=/usr/share/info |
-DINSTALL_INFODIR=share/info |
make
make install
useradd mysql -s /sbin/nologin #/sbin/nologin意思是用户不允许登录(通过ftp可以连接)
chown -R mysql:mysql /data/mysql-5.7.16/ #变更所属组、用户
cd /data/mysql-5.7.16/
#配置环境变量
# echo "export PATH=$PATH:/data/mysql-5.7.16/lib:/data/mysql-5.7.16/bin:" >> /etc/profile
# source /etc/profile
五、创建单实例数据、日志等文件存放路径,如下树形结构,并更改所属组用户
1 /data
2 ├── mysql-5.7.16
4 │ ├── my.cnf
3 ├── mysql5.7.16data
4 │ ├── mysql3220
5 │ │ ├── data
6 │ │ ├── mysqld.pid
7 │ │ ├── mysql.sock
8 │ │ └── mysql.sock.lock
9├── mysql5.7.16log
10│ ├── mysql3220
11│ │ ├── binlogs
12│ │ └── relaylogs
13│ ├── mysqld-5.7-err.log
14│ ├── mysql_multi.log
15│ └── slow.log
# mkdir -p/data/mysql5.7.16data/mysql3220
# mkdir -p/data/mysql5.7.16log/mysql3220/binlogs
# mkdir -p/data/mysql5.7.16log/mysql3220/relaylogs
# chown -R mysql.mysql /data/mysql5.7.16data/
# chown -R mysql.mysql /data/mysql5.7.16log/
六、初始化MySQL[ 初始化完成后会自带随机密码在输出日志中 ]
# /data/mysql-5.7.16/bin/mysqld --initialize --basedir=/data/mysql-5.7.16/ --datadir=/data/mysql5.7.16data/mysql3220/data --user=mysql
七、开启SSL连接(可选)
# /data/mysql-5.7.16/bin/mysql_ssl_rsa_setup --user=mysql --basedir=/data/mysql-5.7.16/ --datadir=/data/mysql5.7.16data/mysql3220/data
八、配置MySQL配置文件
# rmdir /etc/my.cnf.d/
# rm -rf /etc/my.cnf
# rsync
# vi mysql-5.7.16/my.cnf [client] default-character-set = utf8mb4 port=3220 socket=/data/mysql-5.7.16/etc/mysql.sock [mysqldump] quick max_allowed_packet = 16M [mysqld] port = 3220 server-id=68 user=mysql socket=/data/mysql-5.7.16/etc/mysql.sock pid-file=/data/mysql5.7.16data/mysql3220/mysqld.pid datadir=/data/mysql5.7.16data/mysql3220/data/ innodb_data_home_dir=/data/mysql5.7.16data/mysql3220/data/ innodb_log_group_home_dir=/data/mysql5.7.16data/mysql3220/data/ innodb_buffer_pool_size = 50G log_bin = /data/mysql5.7.16log/mysql3220/binlogs/log_bin relay_log=/data/mysql5.7.16log/mysql3220/relaylogs/relay-bin character_set_server = utf8mb4 skip_character_set_client_handshake = 1 collation_server = utf8mb4_bin init_connect = 'SET NAMES utf8mb4' group_concat_max_len=102400 bind_address = 0.0.0.0 skip-name-resolve = 0 sync_binlog = 1 innodb_old_blocks_time = 1000 innodb_flush_method = O_DIRECT back_log = 1000 # 如果存在双主复制,可以打开以下两个参数MASTER01(自增ID技术增长):inc为2,off为1;MASTER02(自增ID偶数增长):inc为2,off为2 # auto_increment_increment =2 # auto_increment_offset =1 report_host=10.20.0.70 basedir = /data/mysql-5.7.16 table_open_cache = 13684 skip-character-set-client-handshake binlog_cache_size=32M query_cache_limit = 2M max_connections = 13684 max_user_connections = 13684 query_cache_size = 256M query_cache_type = 0 log_queries_not_using_indexes = 1 min_examined_row_limit =100000 key_buffer_size = 1M read_buffer_size = 1M sort_buffer_size = 1M # write_buffer = 2M max_allowed_packet = 64M max_connect_errors = 1000000 # net_buffer_length = 8K # read_rnd_buffer_size = 16M event_scheduler = 1 lower_case_table_names = 1 # general_log= on binlog_format = 'ROW' log-error=/data/mysql5.7.16log/mysqld-5.7-err.log slow_query_log = on slow-query-log-file = /data/mysql5.7.16log/slow.log long_query_time = 1 expire_logs_days = 30 connect_timeout = 300 wait_timeout = 28800 interactive_timeout = 28800 join_buffer_size = 8M thread_cache_size = 512 thread_stack = 256K tmp_table_size = 256M max_heap_table_size = 256M bulk_insert_buffer_size = 64M # innodb_autoextend_increment = 256 # innodb_data_file_path=ibdata1:12M:autoextend innodb_buffer_pool_instances = 8 innodb_read_io_threads = 8 innodb_write_io_threads = 4 innodb_thread_concurrency = 80 innodb_flush_log_at_trx_commit = 2 innodb_log_buffer_size = 96M innodb_log_file_size = 10G innodb_log_files_in_group = 3 innodb_max_dirty_pages_pct = 80 innodb_lock_wait_timeout = 120 innodb_file_per_table = 1 # skip_networking = ON # query_cache_min_res_unit = 4K log_timestamps=SYSTEM sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' # GTID (master) log_slave_updates = true gtid_mode = on enforce_gtid_consistency = on [mysql] no-auto-rehash |
九、复制服务脚本并添加到服务中
cp support-files/mysql.server /etc/init.d/mysql5.7
chmod +x /etc/init.d/mysql5.7
chkconfig --add mysql5.7
chkconfig --level 2345 mysql5.7 on
十、设置MySQLroot密码
# 重启MySQL
service mysql5.7 restart
第一种:根据初始化后生产的随机密码设置MySQLroot密码:
# mysql -S /data/mysql-5.7.16/etc/mysql.sock -p'dORk8uo,Djqx'
MySQL>SET PASSWORD FOR 'root'@'localhost' = PASSWORD('xxxxx');
MySQL> flush privileges;
MySQL>GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1'IDENTIFIED BY 'xxxxx' WITH GRANT OPTION;
MySQL> flush privileges;
MySQL> exit;
MySQL # mysql -h127.0.0.1 -P 3220 -uroot -pxxxxx
第二种:(依据官方说明5.6以后版本,第一次启动时会在root目录下生产一个随机密码,文件名.mysql_secret。)
mysql
cat/root/.mysql_secret
****mysql_secure_installation
/etc/init.d/mysql5.7 restart
mysql -p
# mysql -p
Enter password: #此行输入.mysql_secret里第二行内容
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('xxxxx'); #修改root密码
mysql> flush privileges;
exit
mysql -uroot -pxxxx
*区别在于:
- 第一种初始化方式是在安装目录/data/mysql-5.7.16/bin/mysqld --initialize --basedir=/data/mysql-5.7.16/ --datadir=/data/mysql5.7.16data/mysql3220/data --user=mysql利用mysqld进行初始化【推荐】
- 第二种初始化方式是在解压目录/data/soft/mysql-5.7.16/client/mysql_install_db --basedir=/data/mysql-5.7.16/ --datadir=/data/mysql-5.7.16/data --user=mysql利用mysql_install_db进行初始化
- 我们可以看到root@localhost 被赋予随机生成的一个密码,这与以往的mysql版本不一样, 另外mysql_install_db 这个工具也不再被推荐了, mysql_install_db is deprecated. Please consider switching to mysqld --initialize。另外,在初始化时如果加上 –initial-insecure,则会创建空密码的 root@localhost 账号,否则会创建带密码的 root@localhost 账号,密码直接写在 log-error 日志文件中(在5.6版本中是放在 ~/.mysql_secret 文件里,更加隐蔽,不熟悉的话可能会无所适从)