通用二进制格式安装mysql

0 目录

  • 目录
  • 环境和目的
  • 安装配置启动
    • 1 安装
    • 2 配置
    • 3 服务脚本启动和初始化

1 环境和目的

本文在CentOS 7上使用通用二进制格式安装mariadb(mysql)。
mysql有三种方式安装:rpm包、源码、通用二进制格式安装。

通用二进制格式,是指已经编译过的,下载后简单配置即可直接使用的程序包。类似于windows下的绿色免安装程序。

2 安装、配置、启动

2.1 安装

1、为避免干扰,先把之前在该系统用yum安装的mariadb卸载。

从 https://downloads.mariadb.org 下载,本文下载的是5.5.58版本。

2、必须解压至/usr/local下。虽然是mariadb,但还必须是名为mysql的目录。这里为其创建链接目录mysql:

[root@Node5 my_download]% tar xf mariadb-5.5.58-linux-x86_64.tar.gz -C /usr/local/
[root@Node5 my_download]% cd /usr/local
[root@Node5 local]% ln -sv mariadb-5.5.58-linux-x86_64 mysql
‘mysql’ -> ‘mariadb-5.5.58-linux-x86_64’

3、为安全起见,运行mysql服务的必须是系统用户mysql和系统组mysql。为此创建它们。不过由于笔者的虚拟机上已经创建了,应该是之前用yum装过mariadb-server导致:

[root@Node5 local]% id mysql
uid=27(mysql) gid=27(mysql) groups=27(mysql)

4、可以看到解压后,mysql目录下的各文件属主、属组不一,把它们同一修改成属主为root,属组为mysql:

[root@Node5 local]% cd mysql/

[root@Node5 mysql]% ll
total 168
drwxr-xr-x  2 root root   4096 Nov 23 09:48 bin
-rw-r--r--  1  500  500  17987 Oct 17 07:48 COPYING
drwxr-xr-x  3 root root     18 Nov 23 09:48 data
-rw-r--r--  1  500  500   8245 Oct 17 07:48 EXCEPTIONS-CLIENT
drwxr-xr-x  3 root root     19 Nov 23 09:48 include
-rw-r--r--  1  500  500   8694 Oct 17 07:48 INSTALL-BINARY
drwxr-xr-x  3 root root    334 Nov 23 09:48 lib
drwxr-xr-x  4 root root     30 Nov 23 09:48 man
drwxr-xr-x 11 root root   4096 Nov 23 09:48 mysql-test
-rw-r--r--  1  500  500 108813 Oct 17 07:48 README
drwxr-xr-x  2 root root     30 Nov 23 09:48 scripts
drwxr-xr-x 27 root root   4096 Nov 23 09:48 share
drwxr-xr-x  4 root root   4096 Nov 23 09:48 sql-bench
drwxr-xr-x  3 root root    239 Nov 23 09:48 support-files

[root@Node5 mysql]% chown root:mysql ./*

5、为mysql创建一个工作目录,最好是作为一个单独文件系统的挂载点,因为使用时间长了其内容可能会很大。在该工作目录下创建一个目录用于存放数据内容(还可创建其他目录用于存储日志信息等)。

这里为方便起见就不使用单独挂载点了。直接使用/mydata作为工作目录,其下的data作为数据存放目录:

[root@Node5 mysql]% mkdir -pv /mydata/data
mkdir: created directory ‘/mydata’
mkdir: created directory ‘/mydata/data’

注意,data目录作为数据存储目录,要确保mysql用户对其有写权限,所以更改其属主、数组为mysql:

[root@Node5 mysql]% ll -d /mydata/data
drwxr-xr-x 2 root root 6 Nov 23 10:04 /mydata/data
[root@Node5 mysql]% chown mysql.mysql /mydata/data

2.2 配置

mysql配置文件读取次序为(最后读取的最终生效):
1、/etc/my.cnf
2、/etc/mysql/my.cnf
3、启动mysql时使用选项”–default-extra-file=PATH”,表示读取这个选项指定的文件路径的配置文件
4、~/.my.cnf,用户家目录下的这个隐藏配置文件是最后读取

就本次安装来说,程序目录下提供了很多样例配置文件:

[root@Node5 mysql]% ls support-files/
binary-configure        my-innodb-heavy-4G.cnf  my-small.cnf            mysql.server            
magic                   my-large.cnf            mysqld_multi.server     SELinux/                
my-huge.cnf             my-medium.cnf           mysql-log-rotate

之所以很多,因为它们是针对不同内存大小的配置文件,比如my-small.cnf针对的内存是128M的等等。
这里使用my.large.cnf作为配置文件(它是针对256M内存的)。按mysql读取的配置文件,只要把它复制为/etc/my.cnf1或/etc/mysql/my.cnf即可(复制为家目录下的也可以,无所谓)。

[root@Node5 mysql]% mkdir /etc/mysql
[root@Node5 mysql]% cp support-files/my-large.cnf /etc/mysql/my.cnf

在配置文件的mysqld段下,加入3行:

datadir = /mydata/data                          # 用于指定数据存储在哪个目录
skip_name_resolve = ON                          # 用于跳过名称解析。否则数据库授权时会有点麻烦,有得授权指定IP又得授权对应主机,因为mysql会把主机名和它对应的IP看作是两台不同的主机
innodb_file_per_table = ON

2.3 服务脚本启动和初始化

程序目录下提供了服务脚本mysql.server,直接把它复制到/etc/rc.d/init.d下,命名为mysqld即可:

[root@Node5 mysql]% cp support-files/mysql.server /etc/rc.d/init.d/mysqld

因为CentOS 7兼容service作为服务脚步,所以这里直接复制服务脚本也可使用。

此时使用服务脚本启动,会报错,因为mysql的元数据库mysql(名字就叫mysql)没有建立:

[root@Node5 mysql]% service mysqld start
Starting MySQL.171123 10:25:13 mysqld_safe Logging to '/mydata/data/Node5.err'.
171123 10:25:13 mysqld_safe Starting mysqld daemon with databases from /mydata/data
.. ERROR!

可以看到/mydata/data目录下,创建了一些文件但还没有mysql目录(一个目录就对应的一个数据库,此时启动仅会创建一些文件,因为没有元数据库mysql):

[root@Node5 mysql]% ls /mydata/data/
aria_log.00000001  aria_log_control  ibdata1  ib_logfile0  ib_logfile1  mysql-bin.000001  mysql-bin.index  Node5.err

需要运行初始化脚本,在程序包目录下的scrpts/mysql_install_db
注意,运行这个脚本必须在程序包目录下,使用相对路径(绝对路径、其他相对路径均错误)执行
可使用”-h”查看它的各选项,不过此处仅需指明由mysql用户运行、数据目录为何即可:

[root@Node5 mysql]% ./scripts/mysql_install_db  --user=mysql --datadir=/mydata/data
Installing MariaDB/MySQL system tables in '/mydata/data' ...

……

此时可以看到数据目录下有mysql目录(对应mysql元数据库)了:

[root@Node5 mysql]% ls /mydata/data
aria_log.00000001  ibdata1      ib_logfile1  mysql-bin.000001  mysql-bin.000003  Node5.err           test
aria_log_control   ib_logfile0  mysql        mysql-bin.000002  mysql-bin.index   performance_schema

启动成功:

[root@Node5 mysql]% service mysqld start
Starting MySQL.171123 10:36:43 mysqld_safe Logging to '/mydata/data/Node5.err'.
171123 10:36:43 mysqld_safe Starting mysqld daemon with databases from /mydata/data
. SUCCESS! 

[root@Node5 mysql]% ss -tanl
State      Recv-Q Send-Q                  Local Address:Port                                 Peer Address:Port              
LISTEN     0      128                                 *:22                                              *:*                  
LISTEN     0      100                         127.0.0.1:25                                              *:*                  
LISTEN     0      50                                  *:3306                                            *:*                  
LISTEN     0      128                                :::22                                             :::*                  
LISTEN     0      100                               ::1:25                                             :::*

(完)


  1. 如果此前用rpm包装过mariadb.server,那么就算使用yum卸载,原来的/etc/my.cnf还是存在的。可以把它移动到其他位置,否则新安装的mysql会受该配置文件干扰,比如把数据目录指向其他位置。 ↩

你可能感兴趣的:(mysql,mysql)