mysql安装

环境

CentOS6.6 X86_64

下载mysql

当前2015-11-26 mysql最新版为5.7.9

下载源码包
wget http://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.9.tar.gz

下载通用Linux二进制包
wget http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.9-linux-glibc2.5-x86_64.tar.gz

可以用国内的镜像,比较快,如北理工(已失效)
wget http://mirror.bit.edu.cn/mysql/Downloads/MySQL-5.7/mysql-5.7.9-linux-glibc2.5-x86_64.tar.gz
可以下载5.7.10
wget http://mirror.bit.edu.cn/mysql/Downloads/MySQL-5.7/mysql-5.7.10-linux-glibc2.5-x86_64.tar.gz

源码安装

官方文档参考

http://dev.mysql.com/doc/refman/5.7/en/source-installation.html

开始编译安装

安装依赖,创建用户和目录,修改权限

yum -y install cmake ncurses-devel libaio bison boost gcc-c++ gcc
groupadd mysql
useradd -r -g mysql -s /bin/false mysql01

mkdir -p /opt/mysql01/data/
mkdir -p /var/run/mysqld/

chown -R mysql01:mysql /opt/mysql01/
chgrp -R mysql /var/run/mysqld/
chmod -R 770 /var/run/mysqld/

解压编译

tar -xf mysql-5.7.9.tar.gz
cd mysql-5.7.9

cmake . -DCMAKE_INSTALL_PREFIX=/opt/mysql01 \
-DMYSQL_DATADIR=/opt/mysql01/data \
-DSYSCONFDIR=/opt/mysql01/ \
-DMYSQL_USER=mysql01 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1  \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1  \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_UNIX_ADDR=/var/run/mysqld/mysql01.sock \
-DMYSQL_TCP_PORT=13306 \
-DENABLED_LOCAL_INFILE=1 \
-DENABLE_DOWNLOADS=0 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_DEBUG=0 \
-DWITH_SSL:STRING=bundled \
-DWITH_ZLIB:STRING=bundled 

编译选项参考http://dev.mysql.com/doc/refman/5.7/en/source-configuration-options.html

默认选项编译,可以这样
cmake .

编译过程提示gmock测试问题,可以下载gmock,放到源码目录source_downloads目录下
cd source_downloads
wget -O gmock-1.7.0.zip https://github.com/google/googlemock/archive/release-1.7.0.zip 

开始编译,make操作非常耗时间,看机器性能吧。
make
make install

编译相关问题

编译有问题,解决问题后,清理make缓存,重新编译。
make clean
rm CMakeCache.txt


WITH_XXXX_STORAGE_ENGINE存储引擎说明,1启动,0禁用:
默认包含 MyISAM, MERGE, MEMORY, CSV,不需要显式添加
其他: ARCHIVE, BLACKHOLE, EXAMPLE, FEDERATED, INNOBASE (InnoDB), PARTITION (partitioning support), PERFSCHEMA (Performance Schema)

出错如下所示boost没有,或者版本不对
-- MySQL currently requires boost_1_59_0
cmake/boost.cmake:228 (COULD_NOT_FIND_BOOST)

先下载boost_1_59_0
wget http://119.90.16.195:9999/jaist.dl.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz
tar -xf boost_1_59_0.tar.gz
cd boost_1_59_0
./bootstrap.sh 
./b2 install

修改默认的配置文件/etc/my.cnf

将默认生成的/etc/my.cnf配置文件移到安装主目录/opt/mysql01/下
mv /etc/my.cnf /opt/mysql01

参数文件加载顺序http://dev.mysql.com/doc/refman/5.7/en/option-files.html
/etc/my.cnf本机上所有的mysql都能读取此参数文件,有可能一台机器安装多个mysql服务,所以把参数文件放到各自的主目录,如果只安装一个mysql,无所谓啦!

vi my.cnf修改内容最终如下,根据实际调整。(有些参数编译的时候已指定,可以省略。写上自己还能查看。)
[mysqld]
datadir=/opt/mysql01/data/
socket=/var/run/mysqld/mysql01.sock
user=mysql01
port=13306
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

[mysqld_safe]
#log-error和pid默认都放在datadir下
log-error=/opt/mysql01/mysqld01_error.log
pid-file=/var/run/mysqld/mysql01.pid

安装完成后修改权限,初始化数据目录

cd /opt/mysql01
chown -R mysql01 .
chgrp -R mysql .

bin/mysqld --initialize --user=mysql01

输入结果如下所示
[root@vtfsdb1 mysql01]# bin/mysqld --initialize --user=mysql01
2015-11-27T21:57:43.165610Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2015-11-27T21:57:46.310959Z 0 [Warning] InnoDB: New log files created, LSN=45790
2015-11-27T21:57:46.677379Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2015-11-27T21:57:46.752756Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: e4c2c517-9551-11e5-8825-000c29ddac27.
2015-11-27T21:57:46.755687Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2015-11-27T21:57:46.756551Z 1 [Note] A temporary password is generated for root@localhost: v8U%cgyn5QRB

注意最后出现的随机密码,后面要用

5.7跟之前的版本不一样,初始化完成后,没有空帐号(匿名帐号),没有test数据库,生成随机密码,当前主目录下也没有security_file,所以最好记住这个随机密码,后面修改吧。忘记了也没关系,看我后面的文章,如果重置mysql root密码。


说明:
如果之前初始化过,会提示出错,可以在谈不上目录下清空data目录  rm -rf data/*

相关选项参考http://dev.mysql.com/doc/refman/5.7/en/server-options.html
--defaults-file  默认参数文件(注意此参数放在所有参数第一位)
    例如bin/mysqld --defaults-file=/opt/mysql01/my.cnf --initialize --user=mysql01

--no-defaults 不读取参数文件
mysqld参考http://dev.mysql.com/doc/refman/5.7/en/mysqld.html
默认选项帮助
mysqld --help --verbose

启用mysql server

在安装主目录/opt/mysql01/下执行

bin/mysqld_safe &

如果按照上面的步骤做,会读取/opt/mysql01/my.cnf参数配置文件。

如果启用出错,注意查看日志文件/opt/mysql01/mysqld01_error.log,或者使用bin/mysqld --console启动,日志直接输出在控制台,确认启动成功后,再切换回mysqld_safe启动。前台启动mysql server,如果使用Ctrl-C是无法停止服务的,需要使用mysqladmin shutdown,具体使用看下面的停止服务。

修改密码

生成过期的随机密码,密码已过期,不能登录,先修改密码,-p是随机生成的密码
bin/mysqladmin -h localhost -u root password 'root' -p'v8U%cgyn5QRB'

客户端登录

bin/mysql -uroot -p

进入系统后想修改密码,可以用如下指令
update mysql.user set authentication_string=password('foodsafe'), password_expired='N' where user='root';
或者ALTER USER 'root'@'localhost' IDENTIFIED BY 'foodsafe';
flush privileges;

特意在这里写出来修改密码,用过之前版本的mysql的人应该会注意到不是set password,还有什么password_expired过期字段
感觉alter user跟ORACLE好像。

添加man手册

export MANPATH=$MANPATH:/opt/mysql01/man/

添加完成后可以使用man mysqladmin等查看帮助手册

关闭mysql server

bin/mysqladmin shutdown -uroot -p
输入密码


实在不行kill杀进程吧,先用ps -ef|grep mysql找出进行pid,接下来,你懂的。
最好不要直接杀进程,容易导致数据库不一致,数据损坏丢失。
mysqladmin shutdown则是优雅地停止服务,放心使用。

其他

接下来还有Linux数据库服务器优化,mysql参数文件优化,mysql ssl等,这些单独在其他文章中再写吧。

说明

所有相关的目录,链接,参数等请根据实际情况自行调整。

Logo

更多推荐