说明:本安装教程的Linux环境为CentOS6.8,并且只适合在本机安装一个版本的mysql,如果需要安装多个版本的mysql,需要更改一些配置。
使用命令检查是否安装有MySQL Server: rpm -qa | grep mysql
有的话通过下面的命令来卸载掉:
例如查到安装了mysql-libs-5.1.73-7.el6.x86_64
①rpm -e mysql-libs //普通删除模式
②rpm -e --nodeps mysql-libs // 强力删除模式,如果使用上面命令删除时,提示有依赖的其它文件,则用该命令可以对其进行强力删除
⒈安装编译代码需要的包:
yum -y install gcc-c++ ncurses-devel cmake make perl gcc autoconf automake zlib libxml libgcrypt libtool bison
⒉下载mysql安装包
安装包的种类有很多,不同的安装包安装方法略有不同。比如编译好的二进制包,带boost库的安装包,不带boost库的安装包等。为了方便安装过程中不受boost依赖的影响,直接从官网下载mysql-boost-5.7.23.tar.gz版本。
⒊解压mysql-boost-5.7.23.tar.gz到你想存放的目录: tar xvf mysql-boost-5.7.23.tar.gz -C 目录
⒈先 cd 到mysql刚才解压到的目录
⒉编译
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DMYSQL_TCP_PORT=3306 -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 -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/opt/mysql-5.7.23/boost
说明:如果编译出错,没有通过,检测参数后重新运行配置,需要删除CMakeCache.txt文件
#make clean
#rm -f CMakeCache.txt
⒊执行命令:make && make install
说明:这个安装时间很长(30分钟左右),耐心等待即可。
⒈设置权限
使用下面的命令查看是否有mysql用户及用户组:
cat /etc/passwd //查看用户列表
cat /etc/group //查看用户组列表
如果没有就创建:
groupadd mysql //创建mysql组
useradd -g mysql mysql //创建属于mysql组的mysql用户
passwd mysql //为mysql用户创建登录密码
修改/usr/local/mysql权限:chown -R mysql:mysql /usr/local/mysql
⒉初始化
执行初始化配置脚本,创建系统自带的数据库和表:
/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
说明:此条语句执行时容易报错,成功至少要满足以下几个条件
① /usr/local/mysql/data目录存在并且一定要为空目录,否则报错;
② 如果本机已经存在了其余的mysql,请确实/etc/my.cnf文件不存在,否则会按照/etc/my.cnf中的设置进行初始化,datadir会读取另一个mysql实例的路径,从而导致报错。遇到此情况,可以先将已经存在的mysql实例停止,然后将/etc/my.cnf文件剪切到此实例对应的datadir目录中,再启动此实例,然后重新执行初始化命令;
③上面语句初始化成功后会在控制台打印临时管理员密码,如:...root@localhost: 2wp?fPp33/Hw,其中2wp?fPp33/Hw就是密码。
⒊将启动脚本做成服务(选做)
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
chkconfig mysql on //设置服务自动启动
说明:刚安装好,需要手动启动一次。#cd /usr/local/mysql/support-files #./mysql.server start
⒋配置PATH(选做)
#echo "export PATH=$PATH:/usr/local/mysql/bin">>/etc/profile //把mysql的bin路径加入PATH
#source /etc/profile //让PATH变量修改立即生效
⒌创建软链接(选做)
这是由于系统默认会查找/usr/bin下的命令,如果这个命令不在这个目录下,当然会找不到命令,我们需要做的就是映射一个链接到/usr/bin目录下,相当于建立一个链接文件。
解决方法:创建软链接 ln -s /usr/local/mysql/bin/mysql /usr/bin
⒍远程连接配置(选做)
①为root添加远程连接的能力,连接账号为root,连接密码为 “root”(不包括双引号)
mysql> GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY "root";
② 开放3306端口号
# vim /etc/sysconfig/iptables
在打开的文件中,加入如下内容:
# service iptables restart
MYSQL默认给分配了一个默认密码,但当自己在终端上使用默认密码登录的时候,总会提示一个授权失败的错误
解决方法一:修改配置文件my-default.cnf
⒈打开配置文件my-default.cnf,然后在里面找到 [mysqld]
这一项,然后在该配置项下添加skip-grant-tables
这个配置,然后保存文件。
⒉重启mysql服务:service mysql restart
⒊接着就可以免密登录了:敲入 mysql -u root -p
命令然后回车,当需要输入密码时,直接按enter键,便可以不用密码登录到数据库当中。
⒋重置密码:
use mysql;
update user set authentication_string=password('password') where user='root';
flush privileges;
说明:执行sql语句的时候,如果出现ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement. 则需要先执行一下flush privileges.
⒌退出mysql:quit
⒍重启mysql服务: service mysql restart
⒎我们改完默认密码后,再次进入到之前的配置文件中,将我们跳过密码的那个配置行给删除掉,变为系统原先的配置。重启MySQL服务,下次再登录的时候便可以解决掉这个问题了。
解决方法二:进入mysql安全模式
官网说:从5.7.18开始不在二进制包中提供my-default.cnf文件。经过测试,在5.7.18版本中,使用tar.gz安装时,也就是压缩包解压出来安装这种,已经不再需要my.cnf文件也能正常运行。
先关掉Mysql服务:service mysqld stop
进入mysql的安全模式后,键入图中圈起来的四行配置(必须逐行输入),输入完成后使用 ctrl+z
键结束输入 然后再终端中使用 mysql -u root -p 同样可以实现密码登录,另外此时密码也已经修改为了 pass
,下次的登录即可使用pass这个新密码了。
只需要再次设置一下密码,下次就不会出现这样的问题了。