CentOS 7 中以命令行方式安装 MySQL 5.7.11 for Linux Generic 二进制版本教程详解,

MysqL 目前的最新版本是 5.7.11,在 Linux 下提供特定发行版安装包(如 .rpm)以及二进制通用版安装包(.tar.gz)。一般情况下,很多项目都倾向于采用二进制通用安装包形式来进行安装配置,自定义非常方便。但在安装过程中发现,其实官方提供的安装说明文件太过简单,而且里面的参数还有问题,依照执行后,MysqL 服务启动报错,查找了一些资料并反复试验后,自己总结出一套切实可行的安装配置流程,具体如下:

1、下载 MysqL for Linux Generic 二进制版本安装包(.tar.gz),这里以 5.7.11 版本为例。

2、我一般习惯于将 MysqL 安装到 /opt 目录下,所以我将 MysqL 安装包文件复制到 /opt 目录下,切换为 root 账号后执行以下命令:

# tar -zxvf MysqL-5.7.11-linux-glibc2.5-x86_64.tar.gz
# ln -s MysqL-5.7.11-linux-glibc2.5-x86_64 MysqL 
# cd MysqL
建立一个 MysqL 的软连接,是为了以后方便配置与操作。

35.7.11 版本的通用二进制安装包经解压后得到的 MysqL 目录,内部并未包含数据文件存放的目录,所以需要单独再创建一个子目录用于存放数据文件,比如取名为 data,在第二步命令后(确保在 /opt/MysqL 目录下),继续执行如下命令:

# groupadd MysqL
# useradd -r -g MysqL -s /bin/false MysqL
# mkdir data
# chown -R root: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> set password=password('1234');
这样就可以把 root 账号改为 1234 了。

8、在 Linux 下为了安全,认是不允许 MysqL 服务器本机以外的机器访问 MysqL 数据库服务的,因此需要重新授权 root 账号。方便其他机器远程访问 MysqL 服务器,MysqL 命令如下:

MysqL> grant all privileges on *.* to root@'%' identified by '1234';
MysqL> flush privileges;
这样就可以允许从其他机器用 root 账号远程登录 MysqL 服务器了,可以用下面的 MysqL 命令来验证一下:

MysqL> use MysqL;
MysqL> select host,user from user;
+-----------+-----------+
| host | user |
+-----------+-----------+
| % | root |
| localhost | MysqL.sys |
| localhost | root |
+-----------+-----------+
3 rows in set (0.00 sec)
证明系统表 user 中已经增加了一条关于 root 远程登录的记录。

9、补充一下如何停止 MysqL 服务的命令:

# MysqLadmin --user=root --password shutdown
这里 root 是 MysqL 数据库的 root,并不是操作系统的账号,这点不要搞混了,该命令会提示输入 MysqL root 的密码,正确的话就会停止 MysqL 服务了。 

转载地址

相关文章

Centos下搭建性能监控Spotlight
CentOS 6.3下Strongswan搭建IPSec VPN
在CentOS6.5上安装Skype与QQ
阿里云基于centos6.5主机VPN配置
CentOS 6.3下配置multipah
CentOS安装、配置APR和tomcat-native