CentOS 7 中以命令行方式安装 MySQL 5.7.11 for Linux Generic 二进制版本教程详解
MySQL目前的最新版本是5.7.11,在Linux下提供特定发行版安装包(如.rpm)以及二进制通用版安装包(.tar.gz)。一般情况下,很多项目都倾向于采用二进制通用安装包形式来进行安装配置,自定义非常方便。但在安装过程中发现,其实官方提供的安装说明文件太过简单,而且里面的参数还有问题,依照执行后,mysql服务启动报错,查找了一些资料并反复试验后,自己总结出一套切实可行的安装配置流程,具体如下:
1、下载MySQLforLinuxGeneric二进制版本安装包(.tar.gz),这里以5.7.11版本为例。
2、我一般习惯于将MySQL安装到/opt目录下,所以我将MySQL安装包文件复制到/opt目录下,切换为root账号后执行以下命令:
#tar-zxvfmysql-5.7.11-linux-glibc2.5-x86_64.tar.gz #ln-smysql-5.7.11-linux-glibc2.5-x86_64mysql #cdmysql
建立一个mysql的软连接,是为了以后方便配置与操作。
3、5.7.11版本的通用二进制安装包经解压后得到的MySQL目录,内部并未包含数据文件存放的目录,所以需要单独再创建一个子目录用于存放数据文件,比如取名为data,在第二步命令后(确保在/opt/mysql目录下),继续执行如下命令:
#groupaddmysql #useradd-r-gmysql-s/bin/falsemysql #mkdirdata #chown-Rroot:root. #bin/mysqld--initialize--user=mysql--basedir=/opt/mysql--datadir=/opt/mysql/data #bin/mysql_ssl_rsa_setup--datadir=/opt/mysql/data
这里特别说明一下,根据官方文档说法,从5.7.6版本开始,MySQL初始化使用mysqld--initialize命令,不再使用mysql_install_db命令了。但是官方文档给出的mysqld--initialize命令并没有给出--basedir以及--datadir参数,因为它默认使用/etc/my.cnf配置文件。有些Linux发行版在安装过程中可能会默认生成这个mysql配置文件并保存在/etc目录下,而默认配置文件中的basedir、datadir是被注释的,没有实际内容,这样mysqld实际上还是不知道当前的basedir、datadir具体是哪个目录。所以这里就通过命令行参数指定我们的自定义目录。包括mysql_ssl_rsa_setup命令也要指定datadir目录,因为数据库需要的密钥文件也都和数据文件保存在一起,都位于datadir目录内。
4、上述工作完成后,先不慌启动数据库服务,这时还要创建MySQL服务的配置文件my.cnf。这个文件可以从/opt/mysql/support-files子目录下找到一个叫my-default.cnf的配置样例文件,然后复制一个出来,改名为my.cnf并放到/opt/mysql下即可。根据MySQL的规则,它的配置文件必须以my.cnf命名,读取的顺序是先尝试读取/etc/my.cnf,如果不存在则再读取basedir目录下的my.cnf,如果系统环境变量没有basedir,则尝试读取服务启动所在当前目录下的my.cnf,这里就是/opt/mysql/my.cnf这种情况,如果还是不存在,则读取当前用户家目录下的.mysql/my.cnf(需要看官方文档确认一下,记不清了)。所以,我们这里只需保证在/opt/mysql下有一个my.cnf,修改其中的内容为如下:
basedir=/opt/mysql datadir=/opt/mysql/data log-error=/var/log/mysql-error.log
其余的不变。根据官方文档,log-error用来指定服务启动后的运行信息日志文件路径,运行信息包括Notice、Error等类型的日志。
5、配置文件修改保存好后,就可以启动服务了,确保当前目录为/opt/mysql,然后运行以下命令:
#bin/msyqld_safe--user=mysql&
这时服务就可以正常启动了。你还可以通过命令netstat-na-t查看MySQL服务的端口3306是否已经处在监听状态,如果是,则表示服务启动正常。当然,你也可以查看日志文件的内容来确定,我们这里因为在已在配置文件中指定日志文件为/var/log/mysql-error.log,所以查看该文件即可。
6、在本机登录MySQL服务,从5.7.10版本开始不允许root空密码登录了。其实在执行mysqld--initialize后系统就会为root生成一个初始化密码,并在屏幕标准输出时显示出来,这个要记住!用这个密码第一次登录后,才能再修改密码,这里假定系统生成的初始化密码为xxxxxx,命令如下:
#bin/mysql--user=root--password=xxxxxx
这样就可以登录MySQL服务器了。
7、登录以后,系统要求必须修改root账号的密码,MySQL命令如下:
mysql>setpassword=password('1234');
这样就可以把root账号改为1234了。
8、在Linux下为了安全,默认是不允许MySQL服务器本机以外的机器访问MySQL数据库服务的,因此需要重新授权root账号。方便其他机器远程访问MySQL服务器,MySQL命令如下:
mysql>grantallprivilegeson*.*toroot@'%'identifiedby'1234'; mysql>flushprivileges;
这样就可以允许从其他机器用root账号远程登录MySQL服务器了,可以用下面的MySQL命令来验证一下:
mysql>usemysql; mysql>selecthost,userfromuser; +-----------+-----------+ |host|user| +-----------+-----------+ |%|root| |localhost|mysql.sys| |localhost|root| +-----------+-----------+ 3rowsinset(0.00sec)
证明系统表user中已经增加了一条关于root远程登录的记录。
9、补充一下如何停止mysql服务的命令:
#mysqladmin--user=root--passwordshutdown
这里root是mysql数据库的root,并不是操作系统的账号,这点不要搞混了,该命令会提示输入mysqlroot的密码,正确的话就会停止mysql服务了。