CentOS下编译安装MySQL

时间:2022-06-30 10:19:09
目录(步骤):
  1. 准备工作
  2. 检查是否已安装
  3. 添加mysql用户和组
  4. 下载MySQL源码包并解压
  5. 编译安装MySQL
  6. 修改MySQL相关目录所有者和组
  7. 初始化MySQL
  8. 复制mysql配置文件和启动脚本
  9. 启动、关闭mysql服务端,配置开机启动
  10. 启动mysql客户端并设置密码
  11. 部分问题的解决方法
  12. 附录

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.gz
    cd  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源码包并解压
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/mysql
    export 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常用语句