下载MySQL5.7.20源码包,和boost
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.20.tar.gz
wget https://sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz/
添加用户和组MySQL,并且不允许登录
groupadd mysql
usradd-r -g mysql -s /sbin/nologin -M mysql
配置环境,解压包
yum-y install gcc gcc-c++ ncurses ncurses-devel bison libgcrypt perl make cmake
tar-xf mysql-5.7.20.tar.gz
cd mysql-5.7.20mkdir-p /usr/local/mysql/mkdir-p /usr/local/boost/cp boost_1_59_0.tar.gz/usr/local/boost 将包放到boost下
mkdir-p /data/mysql
其中data下的属主和属组必须是mysql,date是数据库目录。
ls/usr/local/mysql
chown-R mysql:mysql /data/mysql
cmake-DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock -DSYSCONFDIR=/etc -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DENABLED_LOCAL_INFILE=1 -DMYSQL_DATADIR=/data/mysql -DDOWNLOAD_BOOST=1 -DMYSQL_TCP_PORT=3306 -DENABLE_DOWNLOADS=1 -DWITH_BOOST=/usr/local/boost -DCMAKE_EXE_LINKER_FLAGS="-ljemalloc" -DWITH_SAFEMALLOC=OFF
此处做优化内容。
make&&make install
将安装目录添加到环境变量中:
echo"export PATH=$PATH:/usr/local/mysql/bin">>/etc/profile
source/etc/profile
查看文件错误日志出现这行信息,
说明文件没有初始化,需要删除/data/mysql(数据库目录)下的文档2017-12-18T15:52:09.477533Z 0 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
2017-12-18T15:52:09.477899Z 0 [ERROR] unknown variable 'default-file=/etc/my.cnf'
2017-12-18T15:52:09.477915Z 0[ERROR] Aborting5初始化安装MySQL
cd/data/mysql 每次初始化时都要删除该目录下文件(数据库目录)
rm-rf ./*/usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql \
--basedir=/usr/local/mysql --datadir=/data/mysql
ps aux | grep mysql
会出现如下内容:
Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ
mysql 27672 0.1 2.5 914052 49200 pts/1 Sl 00:11 0:00 /usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/usr/local/mysql/data/mysql-error.log --open-files-limit=65535 --pid-file=/usr/local/mysql/mysql.pid --socket=/usr/local/mysql/mysql.sock --port=3306
root 27721 0.0 0.0 103260 876 pts/1 S+ 00:15 0:00 grep 3306
6 配置my.cnf
在启动mysql服务时,会按照一定次序搜索my.cnf,先在/etc目录下找,找不到会搜索
$basedir/my.cnf 也就是安装目录,新版的配置文件默认位置。将/etc下的my.cnf备份
否则该文件会影响安装mysql的正确配置,造成无法启动。
cp my-default.cnf /etc/my.cnf
后台启动MySQL
/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf &
正常启动后没有其他内容,回车一下就出来了。
查看MySQL是否启动
ps -aux | grep mysql
将启动的MySQL杀死
kill -9 进程号(两个)
只留下一个就好了:root 80654 0.0 0.0 103256 840 pts/1 S+ 08:18 0:00 grep mysql
cd /usr/local/mysql/support-files
将其中的mysql-server复制到启动程序下,并改名为mysqld
cp mysql-server /etc/init.d/
mv mysql-server /etc/init.d/mysqld
chmod 755 mysqld
修改vi /etc/init.d/mysqld
basedir=/usr/local/mysql
datadir=/data/mysql
启动程序
/etc/init.d/mysqld restart
设置开机自启
chkconfig mysqld on
chkconfig --add mysqld
修改mysqld的密码
vi /etc/my.cnf
在mysqld下添加:skip-grant-tables
service mysqld restart
mysql -u root -p 此时密码为空
登录并修改mysql的root密码:
>use mysql;
>update user set authentication_string=password('123456') where user='root';
>flush privileges;
>quit
在5.7的版主中原来的password改为:authertication_string
在>select * from mysql.user \G; 中得到。
删除skip-grant-tables
重启服务
mysql -v