安装MySQL
Yum安装:
官方安装步骤:http://dev.mysql.com/doc/refman/5.7/en/linux-installation-yum-repo.html
1
|
>
sudo
yum
install
mysql-community-server
|
源码安装:
官方安装步骤:https://dev.mysql.com/doc/refman/5.7/en/installing-source-distribution.html
注意,不同的mysql版本,有不同的安装步骤,请从官网查阅资料。
1.下载:http://dev.mysql.com/downloads/mysql,选择最新版的Source Code,我这里是5.7.9
2.安装必要的软件包,如果有些包已经安装,可以根据情况从后面的列表中去除这些包:
1
|
>yum -y
install
gcc
gcc
-c++ autoconf automake zlib* libxml ncurses-devel libmcrypt* libtool-ltdl-devel*
make
cmake
|
3.解压
1
2
|
>
tar
-zxvf mysql-5.7.9.
tar
.gz
>
cd
mysql-5.7.9 --默认情况下是安装在
/usr/local/mysql
|
4.编译
1
|
>cmake . --注意后面有个点‘.’,代表当前目录
|
注意,以上的cmake . 命令是使用所有默认的配置进行编译,如果希望调整部分设置,请参考官网描述:
https://dev.mysql.com/doc/refman/5.7/en/source-configuration-options.html
但是我们用源码安装的目的就是希望自定义有些属性,因此一般会修改某些配置,比如:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
>cmake . \
-DCMAKE_INSTALL_PREFIX=
/usr/local/mysql
\
-DMYSQL_DATADIR=
/usr/local/mysql/data
\
-DSYSCONFDIR=
/etc/mysql/
\
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DMYSQL_UNIX_ADDR=
/var/lib/mysql/mysql
.sock \
-DMYSQL_TCP_PORT=3306 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_EXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci
|
5.问题解决
在cmake这一步可能遇到以下错误:
说不能找到boost库,但可以通过加上-DDOWNLOAD_BOOST=1 –DWITH_BOOST=<directory>来解决。从上图描述来看,如果boost不在<directory>下,则该选项可以在自动下载boost并且自动解压缩。于是增加了这两个参数:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
>cmake . \
-DCMAKE_INSTALL_PREFIX=
/usr/local/mysql
\
-DMYSQL_DATADIR=
/usr/local/mysql/data
\
-DSYSCONFDIR=
/etc/mysql/
\
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DMYSQL_UNIX_ADDR=
/var/lib/mysql/mysql
.sock \
-DMYSQL_TCP_PORT=3306 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_EXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=
/home/user/Software/boost_1_59_0
|
然后被告知解压的时候失败了,查看了自动下载的boost库:
发现这个文件存在,文件大小为173Byte,于是尝试手动解压,结果解压失败:
于是怀疑这个文件有问题,因此去这个地址手动下载一个:
1
|
>wget http:
//sourceforge
.net
/projects/boost/files/boost/1
.59.0
/boost_1_59_0
.
tar
.gz
|
结果新下载的文件长度还是173Byte,解压还是失败。
接下来去物理机上下载这个文件,在浏览器上打开这个链接,发现文件有80多MB:
下载后,拷贝到虚拟机,再解压,再使用cmake命令:
这就是为什么之前的包里面包含ncurses-devel了。
1
|
>yum
install
ncurses-devel
|
之后再使用cmake,不过,这次的结果跟上图一样。原因是:
上图来自:http://dev.mysql.com/doc/refman/5.7/en/installing-source-distribution.html
删除CMakeCache.txt后再重新编译,这次终于成功了:
6.然后就是make了:
接下来,make会利用源代码生成可执行的库文件,我们会看到构建的进度,这一步要很久,请耐心等待,直到到达100%:
7.最后,make install,直到安装完成。
总结:尽管在官方安装步骤中有说明系统需求,但没有提前说明安装需要依赖哪些库,导致在安装过程中出现了不必要的重复。因此,在参照官方安装步骤的同时建议多搜集资料。
8.初始化:
1
2
3
4
5
6
7
8
|
>
cd
/usr/local/mysql
>
chown
-R mysql .
>
chgrp
-R mysql .
>bin
/mysql_install_db
--user=mysql
# Before MySQL 5.7.6
>bin
/mysqld
--initialize --user=mysql
# MySQL 5.7.6 and up
>bin
/mysql_ssl_rsa_setup
# MySQL 5.7.6 and up
>
chown
-R root .
>
chown
-R mysql data
|
注意,在执行bin/mysqld --initialize --user=mysql这一句的时候,会生成一个root账户的临时密码(随机的),密码直接写在 log-error 日志文件中(在5.6版本中是放在 ~/.mysql_secret 文件里,更加隐蔽,不熟悉的话可能会无所适从)。而且官方说In this case, the password is marked as expired and you will need to choose a new one.
当然,也可以在执行mysqld使用--initialize-insecure参数,这将不会为root账户设置密码。
官方说明:
To initialize the data directory, invoke mysqld with the --initialize
or --initialize-insecure
option, depending on whether you want the server to generate a random initial password for the 'root'@'localhost'
account.
下图是使用--initialize-insecure参数的初始化过程:
在初始化过程中,mysql会检查data目录,如果该目录不存在,则mysql会创建;如果存在且不为空,则会报错。因此,如果遇到这样的错误:
[ERROR] --initialize specified but the data directory exists. Aborting.
或
[ERROR] --initialize specified but the data directory has files in it. Aborting.
请在执行mysqld前保证datadir 目标目录下是空的,避免误操作破坏已有数据。同时指定
1
2
|
--basedir=
/usr/local/mysql
--datadir=
/usr/local/mysql/data
|
这两个参数,像上图一样。
当然,这两个参数也可以写在mysql的配置文件my.cnf中:
1
2
3
|
[mysqld]
basedir=
/opt/mysql/mysql
datadir=
/opt/mysql/mysql/data
|
然后把这个文件传给mysqld:
1
2
|
>bin
/mysqld
--defaults-
file
=
/opt/mysql/mysql/etc/my
.cnf \
--initialize --user=mysql
|
9.启动:
9.1.使用mysqld_safe启动
1
|
>bin
/mysqld_safe
--user=mysql &
|
如果该命令执行失败,并且打印了mysqld ended字样,则说明启动失败,此时需要查看日志文件,默认的位置是 data目录下的host_name.err。
顺便补充一下mysqld_safe这个命令。
参考:https://dev.mysql.com/doc/refman/5.7/en/mysqld-safe.html
mysqld_safe是在Unix平台启动mysqld的推荐方式,它是一个执行脚本,会去调用mysqld这个脚本。
许多mysqld_safe的选项与mysqld相同。对于mysqld_safe不能识别的参数,将传给mysqld,但是在配置文件(15步有说明)中的选项将被忽略掉。
mysqld_safe会读取配置文件中的[mysqld]、[server]和[mysqld_safe]部分的所有配置。
mysqld_safe会把它的错误或提示消息跟mysqld的放在同一个地方
关于mysqld_safe能支持的所有选项,请参照上方链接。
9.2.使用mysql.server启动
参考:https://dev.mysql.com/doc/refman/5.7/en/mysql-server.html
1
|
>support_files
/mysql
.server start
|
MySQL的Linux发行版中还包含了一个叫mysql.server的脚本,它通过调用mysqld_safe脚本来启动mysql。这个脚本在安装完MySQL后被放在support-files文件夹中:
mysql.server读取[mysqld]、[mysql.server]部分的选项。我们可以在/etc/mysql/my.cnf文件中配置相关选项。关于其支持的所有选项,请参照上方链接。
如果初始化的时候使用的是--initialize选项,登录的时候,粘贴刚刚生成的密码:
如果使用的是--initialize-insecure选项,登录的时候,直接按回车键即可:
10.修改临时密码:
参考:http://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html
11.重设root与其他用户的密码:
重设root密码,在设置设置密码之后重新登录时,是需要输入密码的:
创建其他用户,设置密码,并授权:
12.将mysql的bin加入到path中
我把path添加到当前用户目录的bashrc中,如果需要全局设定,请修改`/etc/profile`
1
2
|
>
cd
~
>
vi
.bashrc
|
加入以下内容:
PATH=/usr/local/mysql/bin:$PATH
1
2
|
>
source
.bashrc
>
echo
$PATH
|
这样以后就可以直接使用mysql而不用./mysql这样执行了。
13.将mysql加入到系统服务:
1
2
3
4
5
|
#Next command is optional
>
cd
/usr/local/mysql
>
cp
support-files
/mysql
.server
/etc/init
.d
/mysql
--拷贝脚本到init.d目录下
>
chmod
+x
/etc/init
.d
/mysql
--增加可执行权限
>chkconfig --add mysql --将mysql增加为系统运行级别的服务
|
之后,就可以使用service来启动mysql了:
1
|
>service mysql start
|
注意上面的命令要用sudo或者用root用户执行。
14.停止mysql
使用mysql.server来停止mysql
1
2
|
>
cd
/usr/local/mysql/support-files
>.
/mysql
.server stop
|
当拷贝这个文件到/etc/init.d文件夹后,可以这样停止:
1
|
>
/etc/init
.d
/mysql
stop
|
当加入到系统服务后,可以这样停止:
1
|
>service mysql stop
|
还可以使用mysqladmin命令来停止:
1
|
>mysqladmin
shutdown
|
15.在MySQL中使用配置文件
参考:
https://dev.mysql.com/doc/refman/5.7/en/option-files.html
https://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html
在MySQL5.7.5之前,在Unix平台上, mysql_install_db 会在安装目录下创建一个默认的叫my.cnf
的配置文件
. 该文件是从发行包中一个叫my-default.cnf的模板文件复制而来。当通过使用mysqld_safe来启动MySQL时,服务器默认使用my.cnf
文件做配置。
从第8步可以看到,由于当前安装的版本为5.7.9,因此使用的是mysqld来初始化mysql的,因此这个my.cnf文件需要自己拷贝。
可以通过以下命令查看MySQL完整配置:
1
|
>mysqld --verbose --help
|
在Unix, Linux和OS X系统上,MySQL程序会按表格中的先后顺序从以下文件中读取启动配置:
File Name | Purpose |
/etc/my.cnf | Global options |
/etc/mysql/my.cnf | Global options |
SYSCONFDIR/my.cnf | Global options |
$MYSQL_HOME/my.cnf | Server-specific options |
defaults-extra-file | The file specified with --defaults-extra-file=file_name, if any |
~/.my.cnf | User-specific options |
~/.mylogin.cnf | Login path options |
其中:
~
代表当前用户的主目录( 即$HOME
)
SYSCONFDIR
代表在安装MySQL时在CMake参数上指定的SYSCONFIGDIR选项(从我上面的参数来看,此变量的值为/etc/mysql/)。
既然my.cnf是由my-default.cnf复制而来,那我们就去找找这个my-default.cnf文件:
其中,/home/user/Soft ware/mysql-5.7.9是我用源码解压的位置,这里面的my-default.cnf就是最初的配置模板了。而/usr/local/mysql/是我安装mysql的目录,这下面的my-default.cnf文件是在安装时从解压目录拷贝而来的。把这个文件拷贝到上述表格中的某个文件夹下:
1
|
>
cp
/usr/local/mysql/support-files/my-default
.cnf
/etc/mysql/my
.cnf
|
并打开看看:
其实里面只有一个配置,其余的都被注释掉了。模板文件中也提到了,需要什么配置,以及怎样配置,请参考:
https://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html
修改配置后,重启一下MySQL就能应用了。
安装MySQL Workbench
MySQL-Workbench是一款很好用的MySQL图形化工具。无论是写SQL,分析数据,数据库建模都比mysql方便的多。
1.Yum安装
先去这里下载mysql的yum repository: http://dev.mysql.com/downloads/repo/yum/
之后安装:
1
|
>
sudo
rpm -Uvh mysql57-community-release-el6-n.noarch.rpm
|
然后就能找到mysql-workbench-community了:
安装:
1
|
>
sudo
yum
install
mysql-workbench-community
|
之后会提醒这一大堆库需要先安装:
有个tinyxml库实在不好找,但我在这里下载到了:
http://dl.fedoraproject.org/pub/epel/6/i386/tinyxml-2.6.1-1.el6.i686.rpm(32bit)
之后安装这个库:
1
|
>
sudo
rpm -i tinyxml-2.6.1-1.el6.i686.rpm
|
并等待安装完成:
2.RPM安装
先去这里下载对应的rmp包:http://dev.mysql.com/downloads/workbench/
1
|
>
sudo
rpm -i mysql-workbench-community-6.3.5-1.el6.x86_64.rpm
|
3.源码安装
下载:http://dev.mysql.com/downloads/workbench/ 选择Source Code
由于自行编译依赖的包实在太多,而且限于网速,还有就是没有多少资料可供参考,因此不建议使用此方式安装。
接下来就享受愉快的MySQL Workbench之旅吧!