1,准备工作
卸载系统自带mysql 查看系统是否自带MySQL, 如果有就卸载了, 卸载方式有两种yum, rpm, 这里通过yum卸载
1 2 3 rpm -qa | grep mysql yum -y remove mysql-* rpm -e --nodeps mysql mysql-server
卸载系统自带boost,并安装新版boost mysql 5.7 依赖于boost_1_59_0或更高版本, 查看系统是否自带boost, 如果有就卸载了
1 2 3 rpm -qa | grep boost yum -y remove boost-* rpm -e --nodeps boost-filesystem-1.41.0-11.el6_1.2.x86_64
1 yum install gcc gcc-c++ ncurses ncurses-devel cmake bison libgcrypt perl
2,开始编译
1 2 3 4 5 6 wget http://liquidtelecom.dl.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz wget http://cdn.mysql.com/Downloads/MySQL-5.7/mysql-5.7.12.tar.gz tar -xzvf boost_1_59_0.tar.gz tar -xzvf mysql-5.7.12.tar.gz cd mysql-5.7.12
编译及安装(全程请以root用户进行,以免错误)
以下编译命令挑几个需要的就行了,没必要全部使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 cmake \ -DCMAKE_INSTALL_PREFIX=/opt/mysql/ \ -DMYSQL_DATADIR=/opt/mysql/data \ -DSYSCONFDIR=/etc \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \ -DWITH_EXTRA_CHARSETS=all \ -DEXTRA_CHARSETS=all \ -DMYSQL_TCP_PORT=10086 \ -DMYSQL_USER=mysql \ -DWITH_MYISAM_STORAGE_ENGINE=1 \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_ARCHIVE_STORAGE_ENGINE=1 \ -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ -DWITH_MEMORY_STORAGE_ENGINE=1 \ -DWITH_PARTITION_STORAGE_ENGINE=1 \ -DWITH_READLINE=1 \ -DENABLED_LOCAL_INFILE=1 \ -DWITH_DEBUG=0 \ -DMYSQL_MAINTAINER_MODE=0 \ -DWITH_SSL=bundled \ -DWITH_ZLIB=bundled \ -DMYSQL_UNIX_ADDR=/var/run/mysql/mysql.sock \ -DENABLE_DOWNLOADS=1 \ -DDOWNLOAD_BOOST=1 \ -DWITH_BOOST=../boost_1_59_0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 -DCMAKE_INSTALL_PREFIX: MySQL安装的根目录 -DMYSQL_DATADIR: 数据库文件存放目录 -DSYSCONFDIR: MySQL配置文件所在目录 -DDEFAULT_CHARSET=utf8 默认字符集为utf8 -DDEFAULT_COLLATION=utf8_general_ci 默认编码为utf8 -DWITH_EXTRA_CHARSETS=all 额外的字符集 -DEXTRA_CHARSETS=all 扩展字符支持 -DMYSQL_TCP_PORT=3306 MySQL监听端口为3306 -DMYSQL_USER=mysql MySQL用户名 -DWITH_MYISAM_STORAGE_ENGINE=1 安装MyIASM引擎 -DWITH_INNOBASE_STORAGE_ENGINE=1 安装InnoDB引擎 -DWITH_ARCHIVE_STORAGE_ENGINE=1 安装Archive引擎 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 安装Blackhole引擎 -DWITH_MEMORY_STORAGE_ENGINE=1 安装Memory引擎 -DWITH_PARTITION_STORAGE_ENGINE=1 安装支持数据库分区引擎 -DWITH_READLINE=1 快捷键功能 -DENABLED_LOCAL_INFILE=1 启用加载本地数据 -DWITH_DEBUG=0(默认禁用) 关闭调试支持 -DMYSQL_MAINTAINER_MODE=0 关闭维护模式 -DWITH_SSL=bundled 设置MySQL的通讯支持ssl协议 -DWITH_ZLIB=bundled 允许MySQL使用zlib库 -DMYSQL_UNIX_ADDR=/var/run/mysql/mysql.sock 连接数据库的socket路径 -DENABLE_DOWNLOADS=1 MySQL编译时允许自主下载相关文件 -DDOWNLOAD_BOOST=1 允许下载BOOST库(如未找到,就下载解压) -DWITH_BOOST=../boost_1_59_0 指定BOOST库查找路径
下面开始编译及安装(编译需时较长,我编译大概为1h,具体看配置)
1 2 3 4 make make install /opt/mysql/bin/mysql --version
3,配置MySQL
创建用户,组及各个目录,并赋予用户权限 注意:用户,目录路径要和配置文件相同
1 2 3 4 5 6 7 8 9 10 11 12 13 cat /etc/group | grep mysql cat /etc/passwd | grep mysql groupadd mysql useradd -r -g mysql mysql -M -s /bin/false mkdir -p /opt/mysql/data mkdir -p /var/run/mysql mkdir -p /var/log/mysql chown -R mysql:mysql /opt/mysql chmod -R go-rwx /opt/mysql/datachown -R mysql:mysql /var/log/mysqlchown -R mysql:mysql /var/run/mysql
开始设置MySQL的配置文件my.cnf
先把编译生成的/etc/my.cnf文件备份,然后把 《CentOS系统MySQL的配置文件my.cnf》 文中整理的MySQL的配置文件my.cnf上传到服务器的 /etc/ 目录下,再将配置文件中的以下路径改为你的安装目录和数据库目录即可。
basedir = /usr/local/mysql datadir = /mydata/mysql/data
1 2 3 4 cp /opt/mysql/support-files/mysql.server /etc/init.d/mysqldchmod 755 /etc/init.d/mysqldchkconfig --add mysqld chkconfig mysqld on
初始化MySQL自身的数据库
MySQL 5.7 弃用mysql_install_db初始化,开始使用 mysqld
参数: –initialize-insecure不会生成密码,user表示用户,basedir表示mysql的安装路径,datadir表示数据库文件存放路径。
1 /opt/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/opt/mysql --datadir=/opt/mysql/data
1 /opt/mysql/bin/mysqld_safe --user=mysql --datadir=/opt/mysql/data --log-error=/var/log/mysql/error.log
1 2 ps -ef | grep mysql netstat -tunpl | grep 3306
4,初始化MySQL数据库root用户
执行 /opt/mysql/bin/mysql_secure_installation ,建议英语不好的同学准备好翻译 ,大致如下,具体自测
A,首先让你选择用户密码策略:分成低级 LOW 、中等 MEDIUM 和超强 STRONG 三种,输入数字代号012以选择,选择完成输入密码回车后按 Y 确定即可
代号
策略
要求
0
LOW
只需要长度大于或等于8
1
MEDIUM
除大于8外,还需要含数字、大小写和类似@#%等特殊字符
2
STRONG
前面所有还需要包含字典文件
次数
翻译
操作
第一次
移除 anonymous 用户
y
第二次
是否允许 root 远程登录
n
第三次
移除 test 数据库
y
第四次
刷新MySQL的系统权限相关表
y
5,创建其它MySQL数据库用户
1 2 3 4 5 6 7 8 9 10 11 12 13 /opt/mysql/bin/mysql -uroot -p(MySQL的root用户密码) mysql> CREATE DATABASE `temp` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; mysql> grant all privileges on temp.* to 'test' @'%' identified by 'Test@123.com' ; mysql> flush privileges; mysql> exit ;
6,错误集锦