yum -y install gcc gcc-c++ ncurses ncurses-devel cmake bison bison-devel
建议到官方网站下载http://dev.mysql.com/downloads/mysql/,选择“Source Code”。下载的过程,须要注册一个Oracle帐户,若是有直接登陆就好mysql
提供一个下载地址:http://101.96.10.47/dev.mysql.com/get/Downloads/MySQL-5.7/mysql-boost-5.7.14.tar.gzc++
新版本的源码增长了boost库,若是你下的源码里面没有须要下载这个库,不然会报错sql
cd /usr/local/src wget http://101.96.10.47/dev.mysql.com/get/Downloads/MySQL-5.7/mysql-boost-5.7.14.tar.gz tar -zvxf mysql-boost-5.7.14.tar.gz cd mysql-5.7.14
groupadd -r mysql useradd -r -g mysql mysql
mkdir -p /home/mysql/data mkdir -p /home/mysql/logs mkdir -p /home/mysql/temp
备注:真实的生产环境通常来讲会独立放在根目录下,方便磁盘挂载上去数据库
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ -DMYSQL_DATADIR=/home/mysql/data \ -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \ -DWITH_BOOST=./bootst/boost_1_59_0 \ -DSYSCONFDIR=/etc \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_PARTITION_STORAGE_ENGINE=1 \ -DWITH_FEDERATED_STORAGE_ENGINE=1 \ -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ -DWITH_MYISAM_STORAGE_ENGINE=1 \ -DENABLED_LOCAL_INFILE=1 \ -DENABLE_DTRACE=0 \ -DDEFAULT_CHARSET=utf8mb4 \ -DDEFAULT_COLLATION=utf8mb4_general_ci \ -DWITH_EMBEDDED_SERVER=1
备注:使用cmake源码安装MySQL,若是你打算安装到不一样的路径,注意修改上面语句汇总的“/usr/local/mysql”和“/home/mysql/data”安全
配置解释:socket
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql //设置安装目录性能
-DMYSQL_DATADIR=/home/mysql/data //设置数据库存放目录 优化
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock //设置UNIX socket目录网站
-DDEFAULT_CHARSET=utf8mb4 //设置默认字符集ui
-DDEFAULT_COLLATION=utf8mb4_general_ci //设置默认校对规则
-DWITH_INNOBASE_STORAGE_ENGINE=1 //添加InnoDB引擎支持
-DSYSCONFDIR=/etc //设置my.cnf配置文件的所在目录,默认为安装目录
make #编译安装的过程比较久,编译安装完成执行make install make install #安装完成后清理一下零时文件 make clean
#拷贝可执行文件到指定的目录下,并修更名字为mysqld cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld #授予可执行的权限 chmod +x /etc/init.d/mysqld #设置为开机启动 systemctl enable mysqld
chown -Rf mysql:mysql /usr/local/mysql chown -Rf mysql:mysql /home/mysql
#参考,具体里面的参数说明,请自行晚上搜索 [mysqld] character-set-server = utf8mb4 collation-server = utf8mb4_general_ci skip-external-locking skip-name-resolve user = mysql port = 3306 basedir = /usr/local/mysql datadir = /home/mysql/data tmpdir = /home/mysql/temp # server_id = ..... socket = /usr/local/mysql/mysql.sock log-error = /home/mysql/logs/mysql_error.log pid-file = /home/mysql/data/mysql.pid open_files_limit = 10240 back_log = 600 max_connections=500 max_connect_errors = 6000 wait_timeout=605800 #open_tables = 600 #table_cache = 650 #opened_tables = 630 max_allowed_packet = 32M sort_buffer_size = 4M join_buffer_size = 4M thread_cache_size = 300 query_cache_type = 1 query_cache_size = 256M query_cache_limit = 2M query_cache_min_res_unit = 16k tmp_table_size = 256M max_heap_table_size = 256M key_buffer_size = 256M read_buffer_size = 1M read_rnd_buffer_size = 16M bulk_insert_buffer_size = 64M lower_case_table_names=1 default-storage-engine = INNODB innodb_buffer_pool_size = 1G innodb_log_buffer_size = 32M innodb_log_file_size = 128M innodb_flush_method = O_DIRECT ##################### long_query_time= 2 slow-query-log = on slow-query-log-file = /home/mysql/logs/mysql-slow.log [mysqldump] quick max_allowed_packet = 32M [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid
vi /etc/profile #末尾添加如下内容 #mysql env export PATH=$PATH:/usr/local/mysql/bin:/usr/local/mysql/lib source /etc/profile
mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/home/mysql/data
备注:
我用上面的语句执行后,好像没起啥做用,而后把-datadir里面的数据所有删除,用之前的脚本执行了一次,而后成功
mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/home/mysql/data
[root@db-01 ~]# systemctl start mysqld [root@db-01 ~]# systemctl status mysqld ?.mysqld.service - LSB: start and stop MySQL Loaded: loaded (/etc/rc.d/init.d/mysqld) Active: active (running) since Sat 2016-08-27 18:02:31 CST; 9s ago Docs: man:systemd-sysv-generator(8) Process: 13086 ExecStop=/etc/rc.d/init.d/mysqld stop (code=exited, status=0/SUCCESS) Process: 13211 ExecStart=/etc/rc.d/init.d/mysqld start (code=exited, status=0/SUCCESS) CGroup: /system.slice/mysqld.service ?..13228 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/home/mysql/data --pid-file=/home/mysql/data/mysql.pid ?..13878 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/home/mysql/data --plugin-dir=/usr/local/mysql/... Aug 27 18:02:29 db-01 systemd[1]: Starting LSB: start and stop MySQL... Aug 27 18:02:31 db-01 mysqld[13211]: Starting MySQL.. SUCCESS! Aug 27 18:02:31 db-01 systemd[1]: Started LSB: start and stop MySQL.
[root@db-01 ~]# ps -ef | grep mysql root 13228 1 0 18:02 ? 00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/home/mysql/data --pid-file=/home/mysql/data/mysql.pid mysql 13878 13228 0 18:02 ? 00:00:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/home/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/var/log/mysqld.log --open-files-limit=10240 --pid-file=/home/mysql/data/mysql.pid --socket=/usr/local/mysql/mysql.sock --port=3306 root 14266 14187 0 18:05 pts/0 00:00:00 grep --color=auto mysql
MySQL和Oracle数据库同样,数据库也默认自带了一个 root 用户(这个和当前Linux主机上的root用户是彻底不搭边的),咱们在设置好MySQL数据库的安全配置后初始化root用户的密码。配制过程当中,一路输入 y 就好了。这里只说明下MySQL5.7.14版本中,用户密码策略分红低级 LOW 、中等 MEDIUM 和超强 STRONG 三种,推荐使用中等 MEDIUM 级别!
mysql_secure_installation
在这里设置的root用户明码,能够经过命令登录,可是不能执行任何操做,须要重置密码
mysql -u root -p #首次进入,没法进行任何操做,会报错,运行mysqladmin重置密码 mysqladmin -u root
[root@db-01 ~]# mysql -uroot -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 5 Server version: 5.7.14-log Source distribution Copyright (c) 2000, 2016, 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> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | edu_demo | | mysql | | performance_schema | | sys | +--------------------+ 5 rows in set (0.00 sec)
这样MySQL 5.7.14就完成了安装,若是想要从新安装,只须要进入 /usr/local/src/mysql-5.7.14目录,从新执行make install 就好。