安装MySQL的方式常见的有三种:
1、rpm包形式
2、通用二进制形式
3、源码编译(重点)
1、yum/rpm安装适合对数据库要求不太高的场合,例如并发不大,公司内部,企业内部的一些应用场景;
2、二进制安装比较简答方便,适合5.0-5.1和5.5-5.6系列,是很多专业DBA的选择;
3、普通linux运维人员多采用编译方式,5.0-5.1系列就是常规编译方式,5.5-5.6系列就是cmake编译方式。
mysql版本选择建议:
1.稳定版:选择开源社区版的稳定版GA版本
2.选择mysql数据库GA版本发布后6个月以上的GA版本
3.要选择前后几个月没有大的BUG修复的版本,而不是大量修复BUG的集中版本
4.最好向后较长时间没有更新发布的版本
-----------------------------------------------------------------------------------------------------------------------------------
1、rpm包形式
(1) 操作系统发行商提供的
(2) MySQL官方提供的(版本更新,修复了更多常见BUG)www.mysql.com/downloads
关于MySQL中rpm包类型的介绍:
MySQL-client 客户端组件
MySQL-debuginfo 调试MySQL的组件
MySQL-devel 想针对于MySQL编译安装PHP等依赖于MySQL的组件包
MySQL-embedded MySQL的嵌入式版本
MySQL-server 共享库
MySQL-shared 共享库
MySQL-shared-dompat 为了兼容老版本的共享库
MySQL-test MySQL的测试组件(在线处理功能)
安装方法:
首先可以从安装光盘中或者到mysql的网站上下载对应版本的rpm包如下:
MySQL-server-community-5.5.28-1.rhel5.i386.rpm
MySQL-client-community-5.5.28-1.rhel5.i386.rpm
接着我们可以使用rpm命令进行安装:
rpm -ivh MySQL-server-community-5.5.28-1.rhel5.i386.rpm
rpm -ivh MySQL-client-community-5.5.28-1.rhel5.i386.rpm
补充一点:
-h 使用符号#显示安装进度
-v 报告每一步操作的情况
--------------------------------------------------------------------------------------
2、通用二进制包
(1)新建用户以安全方式运行进程:
1
2
3
|
groupadd -r mysql
useradd -g mysql -r -s /sbin/nologin -M -d /mydata/data mysql
chown -R mysql:mysql /mydata/data
|
(2)安装并初始化mysql-5.5.28
首先下载平台对应的mysql版本至本地,这里是32位平台,因此,选择的为mysql-5.5.28-linux2.6-i686.tar.gz
1
2
3
4
5
6
7
|
tar xf mysql-5.5.28-linux2.6-i686.tar.gz -C /usr/
local
cd /usr/
local
/
ln -sv mysql-5.5.28-linux2.6-i686 mysql
cd mysql
chown -R mysql:mysql .
scripts/mysql_install_db
--user=mysql --datadir=/mydata/data
chown -R root .
|
(3)为mysql提供主配置文件:
1
2
|
cd /usr/
local
/mysql
cp support-files/my-large.cnf /etc/my.cnf
|
(4)修改配置文件:
修改此文件中thread_concurrency的值为你的CPU个数乘以2,比如这里使用如下行:
thread_concurrency = 2
另外还需要添加如下行指定mysql数据文件的存放位置:
datadir = /mydata/data
(5)为mysql提供sysv服务脚本:
1
2
|
cd /usr/
local
/mysql
cp support-files/mysql.server /etc/rc.d/init.d/mysqld
|
(6)添加至服务列表:
1
2
|
chkconfig
--add mysqld
chkconfig mysqld
on
|
(7)而后就可以启动服务测试使用了。
1
|
service mysqld start
|
3、源码编译
若想在5.0系列的红帽系统上进行源码编译安装MySQL必须借助一个跨平台编译器cmake
所以:
(1)首先安装cmake
使用二进制安装。
确保输入 which cmake
可以看到 /usr/local/bin/cmake
安装方式如下:
1
2
3
4
5
|
tar xf cmake-...tar.gz
cd cmake-..
./bootstrap 使用此脚本来检测编译环境
make
make install
|
(3)编译安装mysql-5.7.19
编译安装
1
2
3
4
5
6
7
8
9
10
11
12
13
|
tar xf mysql-5.7.19.tar.gz
cd mysql-5.7.19
groupadd -r mysql
useradd -g mysql mysql
mkdir -pv /data/mydata
chown -R mysql:mysql /data/mydata
chmod -R 1777 /tmp/
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ -DMYSQL_DATADIR=/data/mydata \ -DSYSCONFDIR=/etc \ -DWITH_MYISAM_STORAGE_ENGINE=1 \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_MEMORY_STORAGE_ENGINE=1 \ -DWITH_READLINE=1 \ -DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock \ -DMYSQL_TCP_PORT=3306 \ -DENABLED_LOCAL_INFILE=1 \ -DWITH_PARTITION_STORAGE_ENGINE=1 \ -DEXTRA_CHARSETS=all \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/usr/local/boost
make
make install
---------------------------------------------------------
不成功咋办?清理了重来
如果想清理此前的编译所生成的文件,则需要使用如下命令: make clean |
使用cmake编译mysql-5.7.19,选项的方式有所改变简单介绍一下
指定安装文件的安装路径时常用的选项:
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql 指定安装路径
-DMYSQL_DATADIR=/data/mysql 数据安装路径
-DSYSCONFDIR=/etc 配置文件的安装路径
由于MySQL支持很多的存储引擎而默认编译的存储引擎包括:csv、myisam、myisammrg和heap。若要安装其它存储引擎,可以使用类似如下编译选项:
-DWITH_INNOBASE_STORAGE_ENGINE=1 安装INNOBASE存储引擎
-DWITH_ARCHIVE_STORAGE_ENGINE=1 安装ARCHIVE存储引擎
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 安装BLACKHOLE存储引擎
-DWITH_FEDERATED_STORAGE_ENGINE=1 安装FEDERATED存储引擎
若要明确指定不编译某存储引擎,可以使用类似如下的选项:
-DWITHOUT_
比如:
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 不启用或不编译EXAMPLE存储引擎
-DWITHOUT_FEDERATED_STORAGE_ENGINE=1
-DWITHOUT_PARTITION_STORAGE_ENGINE=1
如若要编译进其它功能,如SSL等,则可使用类似如下选项来实现编译时使用某库或不使用某库:
-DWITH_READLINE=1
-DWITH_SSL=system 表示使用系统上的自带的SSL库
-DWITH_ZLIB=system
-DWITH_LIBWRAP=0
其它常用的选项:
-DMYSQL_TCP_PORT=3306 设置默认端口的
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock MySQL进程间通信的套接字的位置
-DENABLED_LOCAL_INFILE=1 是否启动本地的LOCAL_INFILE
-DEXTRA_CHARSETS=all 支持哪些额外的字符集
-DDEFAULT_CHARSET=utf8 默认字符集
-DDEFAULT_COLLATION=utf8_general_ci 默认的字符集排序规则
-DWITH_DEBUG=0 是否启动DEBUG功能
-DENABLE_PROFILING=1 是否启用性能分析功能
(4)编辑配置文件
vim /etc/my.cnf
添加如下行指定mysql数据文件的存放位置:
datadir = /data/mydata
-----------------------------------------------------------------------------------------------------------
(5)配置环境变量
echo 'export PATH=/usr/local/mysql/bin:$PATH' >>/etc/profile
tail -l /etc/profile
source /etc/profile
echo $PATH
(6)初始化mysql
cd /usr/local/mysql/bin/
./mysql_install_db --basedir=/usr/local/mysql --datadir = /data/mydata --user=mysql
出现报错
Child process: /usr/local/mysql/bin/mysqldterminated prematurely with errno= 32
出错原因
mysql 5.7不支持mysql_install_db,应该使用mysqld --initialize 完成实例初始化。
# 5.7.6之后版本初始系统数据库脚本(本文使用此方式初始化)
./mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/mydata
说明
basedir 是mysql 用户的目录,就是数据库安装的目录 datadir 是mysql数据库 data 的目录,存表空间等 |
(7)创建执行脚本和启动服务
1
2
3
4
5
|
cp support-files/mysql.server /etc/rc.d/init.d/mysqld 复制脚本
chmod +x /etc/rc.d/init.d/mysqld 执行权限
chkconfig --
add
mysqld 添加到服务列表中
service mysqld start 启动服务
bin/mysql 启动mysql
|
-----------------------------------------------------------------------------------------------------------------------------------
问题一:解决mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists
解决:http://blog.csdn.net/z_yttt/article/details/73650495
问题二:遇到的问题---mysql 启动错误-server PID file could not be found
解决:http://blog.csdn.net/zzq900503/article/details/16120355
问题三:MySQL配置文件my.cnf参数优化和中文详解