目录(步骤):
- 准备工作
- 检查是否已安装
- 添加mysql用户和组
- 下载MySQL源码包并解压
- 编译安装MySQL
- 修改MySQL相关目录所有者和组
- 初始化MySQL
- 复制mysql配置文件和启动脚本
- 启动、关闭mysql服务端,配置开机启动
- 启动mysql客户端并设置密码
- 部分问题的解决方法
- 附录
1. 准备工作
- 以前装过的就不用了,想知道具体功能就百度吧
- 安装编译源码的工具和库:yum install gcc gcc-c++
- 安装make:yum -y install gcc automake autoconf libtool make
- 安装cmake:下载源码并编译安装
资源链接: https://cmake.org/download/ 在服务器尝试了几次wget失败,最后下了个合适的版本到本地windows,再用FileZilla传到服务器的,目录自选,本文为/data/software/tar -xzvf cmake-3.4.3.tar.gzcd cmake-3.4.3.tar.gz./bootstrap; make; make install
2.检查是否已安装
- 如果已经安装了库文件,要先卸载,否则覆盖会出现错误
- rpm -qa|grep -i mysql
- 若无输出,说明没有安装,可跳过此步;
- 如果输出mysql-libs-XXX-xxx,则要删除该库
- 删除库:rpm -e mysql-libs-XXX-xxx --nodeps,选项--nodeps表示忽略依赖关系
3.添加mysql用户和组
- 用于设置mysql安装根目录文件所有者和所属组
- 添加mysql组:groupadd mysql
- 添加mysql用户:useradd -r -g mysql mysql,-r表示mysql用户是系统用户不可用于登录,-g mysql表示mysql用户属于mysql组
4.下载MySQL源码包并解压
- 新建安装目录:mkdir /usr/local/mysql
- 进入该目录:cd /usr/local/mysql
- 下载:wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.29.tar.gz
- 上面的下载地址中有很多个版本,请自行选择需要的版本;若地址失效,可到以下两个地址下载
- 官方下载地址:http://dev.mysql.com/downloads/mysql/#downloads
- 镜像文件地址:http://dev.mysql.com/downloads/mirrors.html
- 解压:tar -zxvf mysql-5.6.29.tar.gz
- 进入该解压后目录:cd mysql-5.6.29
5.编译安装MySQL
- 从MySQL5.5起,源码安装开始使用cmake,以下操作设置源码编译配置脚本的编译参数(最后的附录有说明这些参数的意义)
cmake \-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \-DDEFAULT_CHARSET=utf8 \-DDEFAULT_COLLATION=utf8_general_ci \-DWITH_INNOBASE_STORAGE_ENGINE=1 \-DWITH_ARCHIVE_STORAGE_ENGINE=1 \-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \-DMYSQL_DATADIR=/data/mysqldb \-DMYSQL_TCP_PORT=3306 \-DENABLE_DOWNLOADS=1
- 删除CMakeCache.txt后再运行配置(删除就好不用切换目录):rm /data/software/cmake-3.4.3/CMakeCache.txt
-
在/usr/local/mysql目录下:
- 编译:make
- 安装:make install
6.修改MySQL相关目录所有者和组
- 我要把数据库放在另一个磁盘上,所以新增数据库目录:mkdir /data/mysqldb(此处可能导致错误,参见11中的问题一)
- 进入mysql所在目录:cd /usr/local/mysql
- 修改:chown -R mysql:mysql . (注意这个点,代表当前目录,第一个mysql是用户名,第二个是组)
- 进入mysql数据库目录:cd /data/mysqldb
- 修改:chown -R mysql:mysql .
7.初始化MySQL
- cd /usr/local/mysql
- 执行mysql_install_db脚本:scripts/mysql_install_db --user=mysql --datadir=/data/mysqldb
- 对mysql中的data目录进行初始化并创建一些系统表格。
- mysql服务进程mysqld运行时,会访问data目录,所以必须由启动mysqld进程的用户即mysql,执行这个脚本,或者用root执行,但是加上参数--user=mysql,
- 将mysql所在目录的所有文件改回root用户所有,mysql用户只需作为mysql/data/目录下所有文件的所有者
- chown -R root .
- chown -R mysql data
8.复制mysql配置文件和启动脚本
- 复制配置文件:cp support-files/my-default.cnf /etc/my.cnf;如果/etc/my.cnf文件存在,则覆盖
- 复制启动脚本:cp support-files/mysql.server /etc/init.d/mysqld
9.启动、关闭mysql服务端,配置开机启动
- mysql启动关闭等操作(若启动失败请参考11):service mysqld start/stop/restart
- 配置开机启动(自选):chkconfig --add /etc/init.d/mysqld
- 检查是否启动mysql:netstat -ntulp | grep 3306
- 检查配置开机启动是否成功:chkconfig --list mysqld,显示mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off 即为成功
10.启动mysql客户端并设置密码
- mysql客户端启动:/usr/local/mysql/bin/mysql,启动后会输出一些东西,输入exit可以退出客户端
- 为了避免每次都输入这么一长串路径,可将以下环境变量加入/etc/profile的最后两行
MYSQL_HOME=/usr/local/mysqlexport PATH=$PATH:$MYSQL_HOME/bin
- 保存后要先执行命令:source /etc/profile
- 设置MySQL的root用户密码:mysqladmin -u root password '1234',之后每次登录输入mysql -u root -p,然后输入密码
11.部分问题的解决方法
-
问题一:service mysqld start失败
- 错误信息为: MySQL..The server quit without updating PID file ([FAILED]/mysql/Server03.mylinux.com.pid).
- 日志显示:[ERROR]Can't open the mysql.plugin table.Please run mysql_upgrade to create it
- 解决方法:修改/etc/my.cnf中的datadir:指向正确的mysql数据库文件目录,比如本文是/data/mysqldb
-
问题二:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock'
- 解决方法1:用-S参数,直接指出mysql.sock位置,/usr/local/mysql/bin/mysql -u root -S /usr/local/mysql/data/mysql.sock
- 解决方法2:新建一个链接或在,ln -s /usr/local/mysql/data/mysql.sock /tmp/mysql.sock
12.附录
cmake
配置参数的意义
-DCMAKE_INSTALL_PREFIX=dir_name | 设置mysql安装目录 |
-DMYSQL_UNIX_ADDR=file_name | 设置监听套接字路径,这必须是一个绝对路径名。默认为/tmp/mysql.sock |
-DDEFAULT_CHARSET=charset_name | 设置服务器的字符集。 缺省情况下,MySQL使用latin1的(CP1252西欧)字符集。cmake/character_sets.cmake文件包含允许的字符集名称列表。 |
-DDEFAULT_COLLATION=collation_name | 设置服务器的排序规则。 |
-DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 |
存储引擎选项: MyISAM,MERGE,MEMORY,和CSV引擎是默认编译到服务器中,并不需要明确地安装 静态编译一个存储引擎到服务器,使用-DWITH_engine_STORAGE_ENGINE= 1 可用的存储引擎值有:ARCHIVE, BLACKHOLE, EXAMPLE, FEDERATED, INNOBASE (InnoDB), PARTITION (partitioning support), 和PERFSCHEMA (Performance Schema) |
-DMYSQL_DATADIR=dir_name | 设置mysql数据库文件目录 |
-DMYSQL_TCP_PORT=port_num | 设置mysql服务器监听端口,默认为3306 |
-DENABLE_DOWNLOADS=bool | 是否要下载可选的文件。例如,启用此选项(设置为1),cmake将下载谷歌所使用的测试套件运行单元测试。 |
/usr/local/mysql/下的目录结构
Directory |
Contents of Directory |
bin |
Client programs and the mysqld server |
data |
Log files, databases |
docs |
Manual in Info format |
man |
Unix manual pages |
include |
Include (header) files |
lib |
Libraries |
scripts |
mysql_install_db |
share |
Miscellaneous support files, including error messages, sample configuration files, SQL for database installation |
sql-bench |
Benchmarks |
MySQL的更多操作请参考MySql常用语句