时间:2018.7.30
作者:李强
参考:man,info,magedu讲义,万能的internet
实验环境:VMware® Workstation 12 Pro ,Centos 6.9,Centos 7.4,SecureCRT Version 8.1.4
声明:以下英文纯属个人翻译,英文B级,欢迎纠正,以下内容纯属个人理解,并没有对错,只是参考,盗版不纠,才能有限,希望不误人子弟为好。
版本:v1-2018.7.30

参考资料

1、https://www.cnblogs.com/BrightMoon/p/4730081.html
2、https://dev.mysql.com/doc/refman/5.6/en/installing.html

官方下载站点:

https://dev.mysql.com/downloads/mysql/

可以下载rpm包,repo仓库。二进制包等

一些镜像站点如搜狐,阿里,网易等都不好使了。

mysql安装为什么大部分使用二进制安装。而不是源码手动去编译?

mysql使用的glibc进行开发的。glibc库是一个底层api,所以只要是linux,都会有glibc库。所以,mysql安装不需要考虑环境是否符合要求。移植性很方便。直接将编译好的二进制代码复制到另外一个机器上,也是可以用的。

原理性东西:一般在linux下安装一个软件,不同软件所需要的函数库不同。于是会遇到一个现象:一个软件复制到另外一个平台可能无法运行。安装软件需要先侦测环境就是出于此考虑。因为mysql使用的是通用的glibc函数库。没有对其他东西的依赖性。所以,从一个平台复制到另外一个平台能够通用。并不需要去侦测环境。直接使用编译好的二进制即可

手动编译安装,显得步骤麻烦。基于mysql的特点,二进制安装完全可以。

注:mysql5.5安装的时候,需要用到cmake命令,所以需要保证你的机器上安装了该命令。没有的话,还要去安装该cmake。也显得麻烦。我暂时不想去安装最新版本的了。

如果使用二进制安装升级怎么进行?

升级获取的还是二进制压缩包。那么,直接将指向目录切换到新的目录即可。

不需要涉及到像php一样,手动编译可以达到自己定制模块的好处。而mysql安装的时候不需要涉及到模块

mysql官方建议安装方式:二进制安装。

以下为安装二进制版本5.6.41操作步骤

一、安装前环境准备:

1、依赖库检查

主要是看二进制安装依赖的库是否存在,数据库初始化和服务启动需要此库

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

2、安装相关规划

    软件安装目录      /usr/loca/app/mysql_13306
    数据库存放目录  /data/mysql_13306
    port                     13306
    pid_file                /data/mysql_13306/mysql_13306.pid
    socket                 /data/mysql_13306/mysql_13306.socket
    log_error             /var/log/mysql_13306.log

二、进制安装步骤

1、创建用户

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

2、下载二进制包

shell> cd /usr/local/app
shell> wget https://cdn.mysql.com//Downloads/MySQL-5.6/mysql-5.6.41-linux-glibc2.12-x86_64.tar.gz
shell> tar zxvf mysql-5.6.41-linux-glibc2.12-x86_64.tar.gz
shell> mv mysql-5.6.41-linux-glibc2.12-x86_64 mysql_13306
shell> ln -s  mysql_13306  ../mysql_13306
# 我觉得建立软链接其实作用就是因为默认的路径就是这里。当我们安装多实例的时候,这个步骤就没有意义了。
shell>cd /usr/local/app/mysql_3306
shell> rm -rf data
shell> ln -s data /data/mysql_13306

3、为工作目录指定用户权限

shell> cd mysql_13306
shell> scripts/mysql_install_db --user=mysql   #这里可以指定mysql安装和安装数据的位置。 
# --basedir=path 使用mysqld程序的路径 --datadir=path  数据库安装的路径
#此脚本,默认执行的是
#./bin/mysqld --bootstrap --basedir=. --datadir=/var/lib/mysql --log

shell> chown -R root .
shell> chown -R mysql /data/mysql_13306
# 数据库数据位置需要拥有mysql的权限。不能设置为root权限。否则无法启动。
shell> scripts/mysql_install_db --user=mysql --basedir=/usr/local/app/mysql_13306 --datadir=/usr/local/app/mysql_13306/data
To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system

PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:

  /home/ewifi/mysql/bin/mysqladmin -u root password 'new-password'
  /home/ewifi/mysql/bin/mysqladmin -u root -h ewifi-yuhang password 'new-password'

Alternatively you can run:

  /home/ewifi/mysql/bin/mysql_secure_installation

which will also give you the option of removing the test
databases and anonymous user created by default.  This is
strongly recommended for production servers.

See the manual for more instructions.

You can start the MySQL daemon with:

  cd . ; /home/ewifi/mysql/bin/mysqld_safe &

You can test the MySQL daemon with mysql-test-run.pl

  cd mysql-test ; perl mysql-test-run.pl

Please report any problems at http://bugs.mysql.com/

The latest information about MySQL is available on the web at

  http://www.mysql.com

Support MySQL by buying support/licenses at http://shop.mysql.com

New default config file was created as /home/ewifi/mysql/my.cnf and
will be used by default by the server when you start it.
You may edit this file to change server settings

WARNING: Default config file /etc/my.cnf exists on the system
This file will be read by default by the MySQL server
If you do not want to use this, either remove it, or use the
--defaults-file argument to mysqld_safe when starting the server

/home/ewifi/mysql/bin/mysqld_safe --defaults-file=/home/ewifi/mysql/my.cnf &

4、修改配置文件指定mysql的安装目录和数据目录


执行完安装数据库脚本后,会在安装路径下自动生成my.cnf配置文件。
主要设置参数,在mysqld下配置。
[mysqld]  

user =mysql                                 //以mysql用户权限运行mysql服务
baseurl=/usr/loca/app/mysql_13306       //mysql二进制程序路径,默认为当前程序的./bin/mysqld
dataurl=/data/mysql_13306/        //mysql数据库存放路径, 默认为/var/lib/mysql

因为我们可能根据自己的数据安全,放在其他位置,可以将二进制里的data目录删除,然后建立一个软链接过去。然后设置data的属性为mysl.mysql

port=13306
socket=/data/mysql_13306/mysql_13306.socket         //socket文件,默认路径为/var/lib/mysql/mysql.sock
pid-file=/var/run/mysql_13306.pid        //如果没有指定,那么默认为$datadir/`hostname`.pid
[mysqld_safe]
log-error=/var/log/mysql_13306.log   

5、启动服务器

shell> bin/mysqld --user=mysql &           # 或使用mysqld_safe
shell> bin/mysqld_safe --user=mysql  --defaults-file=/usr/loca/app/mysql_13306/my.cnf & # 官方建议使用这个

#启动可以用mysqld也可以使用mysqld_safe,区别简单点就是mysqld_safe比mysql更安全,因为mysqld_safe启动后会监控mysql服务状态做到自动重启mysql服务的功能,本质上用到的还是mysqld程序。
#如果安装目录和数据库目录改变,添加相关参数

6、添加启动脚本。

# Next command is optional
shell> cp support-files/mysql.server /etc/init.d/mysql_13306.server

如果修改了baseurl和dataurl的位置,这里需要对这2个变量进行赋值
这里调用的就是mysqld_safe 

注意事项

1、不同版本的安装方式不一样。需要参考官方安装指导手册
2、自定义的路径,需要修改相关文件的相关变量。官方上是默认路径。