Linux上安装MySQL(glibc版)并配置多实例(mysqld_multi)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013235478/article/details/50708142

Oracle提供了一套MySQL的二进制发行版,即带.tar.gz扩展名的压缩tar文件。安装步骤如下:

第一步:删除已有MySQL。
如果之前已经使用操作系统的本地包安装包管理系统安装了MySQL,像yum或apt-get。再使用本地二进制文件安装时可能会遇到问题,所以要确保以前的MySQL安装被完全删除,包括旧版本的数据文件。同时检查配置文件,像/etc/my.cnf或/etc/mysql目录,若存在则删除它们。

第二步:检查libaio依赖。
MySQL依赖于libaio库,如果本地没有安装该库,初始化data目录和后续的启动服务步骤会失败。必要时可用恰当的包管理器安装它。如基于yum的系统可用如下命令:

shell> yum search libaio # search for info
shell> yum install libaio # install library

或者,在基于APT的系统上用如下命令:

shell> apt-cache search libaio # search for info
shell> apt-get install libaio # install library

第三步:创建mysql用户和组。
如果系统没有一个user和group来运行mysqld,需要创建一个。如下命令添加了一个名为mysql的group和user,也可以为user和group取一个其它的名字来替代mysql,如果这样的话,就在后面的介绍中用自己的名字替换mysql。

shell> groupadd mysql
shell> useradd -r -g mysql -s /bin/false mysql

因为user仅需要所有权,而不是登录的用途,useradd命令使用-r和-s /bin/false选项来创建一个对服务器主机没有登录权限的账户。如果useradd命令不支持这些选项则忽略它。

第四步:下载压缩包并解压。
http://dev.mysql.com/downloads/mysql/上下载Linux平台下的压缩包到/usr/local/目录下,我这里下载的版本为mysql-5.7.11-linux-glibc2.5-x86_64.tar.gz。进入到该目录,执行如下命令:

shell> tar zxvf mysql-5.7.11-linux-glibc2.5-x86_64.tar.gz
shell> ln -s /usr/local/mysql-5.7.11-linux-glibc2.5-x86_64 mysql

第一条解压命令会创建一些安装目录,目录结构和内容如下表所示。如果没有data目录则需手动创建一个data目录。

目录 目录内容
bin, scripts mysqld服务端、客户端和使用程序
data 日志文件、数据文件
docs MySQL手册中的信息格式
man Unix手册页
include 包含(头)文件
lib
share 其它支持文件,包括错误信息,示例配置文件,SQL数据库的安装

第二条ln命令用来给解压后的目录创建一个符号连接,这可以让你更容易引用到MySQL的安装目录。

第五步:设置secure_file_priv系统变量(可选)。
进入到解压后的MySQL安装目录,创建名为mysql-files的目录,作为系统变量secure_file_priv的值,用来限制导入/导出操作至一个指定的目录。命令如下:

shell> cd mysql-5.7.11-linux-glibc2.5-x86_64
shell> mkdir data
shell> mkdir mysql-files
shell> chmod 750 data mysql-files

第六步:切换mysql安装用户。
如果需要,确保tar解压后的内容是名为mysql的用户来访问。如果是使用mysql用户安装的,则不需要进一步操作。如果使用root用户安装的,它将由root用户所拥有。在安装目录下以root用户身份执行如下命令来改变mysql数据库的所有权:

shell> chown -R mysql .
shell> chgrp -R mysql .

这两条指令分别将MySQL文件的所有权分配给名为mysql的user和group。

第七步:初始化data目录。
data目录包含MySQL数据库初始化时的权限表,用来决定用户如何被授权访问数据库。data目录初始化仅在第一次安装MySQL时需要被执行。在MySQL5.6.7版本以前,使用如下命令:

shell> bin/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

MySQL5.6.7及以后的版本则用如下命令:

shell> bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

通在Windows上的压缩包安装一样,执行该命令后会产生一个随机密码,记录下该密码,如下图所示:
这里写图片描述

第八步:创建安全连接文件。
如果你想使MySQL服务器能自动部署并支持安全连接,使用如下命令来创建默认的SSL和RSA文件(仅支持MySQL5.7.6及以上版本):

shell> bin/mysql_ssl_rsa_setup --dasedir=/usr/local/mysql --datadir=/usr/local/mysql/data

执行结果如下图所示:
这里写图片描述

第九步:设置最终安装所有权。
将MySQL安装目录设置为root用可访问,同时,data目录和mysql-files目录的所有权设置为mysql用户。执行如下命令:

shell> chown -R root .
shell> chown -R mysql data mysql-files

第十步:设置MySQL配置文件。
将MySQL安装目录下的support-files目录下的my-default.cnf文件拷贝到/etc目录下,修改或添加以下内容:

basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
port = 3306
server_id = 1

第十一步:启动MySQL服务
执行下面的mysqld_safe命令来启动MySQL服务,第二条命令用于将MySQL添加到系统服务并自启动。

shell> bin/mysqld_safe --user=mysql &
shell> cp support-files/mysql.server /etc/init.d/mysql

设置完成后可通过service mysql start和service mysql stop命令启动和停止MySQL服务。

第十二步:更改root密码
在MySQL安装目录下执行如下命令进行登录

shell> bin/mysql –uroot -p

执行该命令后会提示输入密码,此时输入在第七步中提示的随机密码,登录成功后进入到MySQL命令行,执行如下MySQL命令来更改root密码

mysql> ALTER USERroot@’localhost’ IDENTIFIED BY ‘new_password`;

至此MySQL安装完成。


下面将讲到在Linux上配置单机多实例MySQL。

MySQL有mysqld_safe、mysql.server、mysqld_multi三种启动方式。上面有讲到用mysqld_safe和mysql.server方式启动MySQL。mysqld_multi用于管理多个mysqld的服务进程,并且可以监听在不同Unix socket文件和TCP/IP端口上的连接。这里将在MySQL已安装好的情况下讲解通过mysqld_multi来配置MySQL单机多实例。

首先在MySQL安装目录下新建目录data3307,表示端口号为3307的MySQL实例的数据目录,并变更权限为mysql用户组,再初始化该目录,该步骤同样要记住生成的随机密码。命令如下:

shell> cd /usr/local/mysql
shell> mkdir data3307
shell> chmod 750 data3307
shell> bin/mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data3307 --basedir=/usr/local/mysql

然后修改/etc/my.cnf文件,内容如下(只列出与多实例配置相关的变量):

[mysqld_multi]
mysqld = /usr/local/mysql/bin/mysqld_safe
mysqladmin = /usr/local/mysql/bin/mysqladmin

[mysqld1]
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
port = 3306
server_id = 1
socket = /tmp/mysql.sock1
pid-file = /usr/local/mysql/data/mysql_safe.pid

[mysqld2]
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data3307
port = 3307
server_id = 2
socket = /tmp/mysql.sock2
pid-file = /usr/local/mysql/data3307/mysql_safe.pid

mysqld_multi会在MySQL的配置文件my.cnf中查找分组名[mysqldN],N为正整数,用于标识不同MySQL实例,并且是mysqld_multi命令start|stop|reload|report选项的参数。修改完成后停止之前运行的mysql服务并执行如下命令:

shell> bin/mysqld_multi –-defaults-file=/etc/my.cnf start 1,2

–defaults-file选项用于指定要加载的配置文件路径,命令执行成功后就启动了配置文件中[mysqld1]和[mysqld2]两组配置下的MySQL实例,可通过该命令的report选项来查看各个实例的运行情况,命令如下:

shell> bin/mysqld_multi report 1,2

执行结果如下图所示:
这里写图片描述

mysqld_multi命令的stop和reload选项用法也一样,用于服务停止和重新加载配置文件。

MySQL服务启动成功后即可登录服务,不过通过mysqld_multi方式启动的MySQL服务在登录时需要指定socket文件,也就是在my.cnf文件中配置的socket参数,比如登录端口为3307的MySQL实例的命令如下:

shell> bin/mysql –uroot –P3307 –S /tmp/mysql.sock2 –p
shell> password:

输入前面记录下来的随机密码即可登录成功,首次登录成功后需修改root密码,执行如下命令:

mysql> ALTER USERroot@’localhost’ IDENTIFIED BY ‘new_password`;

至此,端口号为3307的MySQL实例配置完成,如需更多实例按这些步骤继续配置即可。

猜你喜欢

转载自blog.csdn.net/u013235478/article/details/50708142