CentOS 源码编译 mysql 及配置

转自 http://www.chenyudong.com/archives/building-mysql-5-6-from-source.html


能解决包括没有mysql.sock文件 和  The server quit without updating PID file等问题。。困扰了我好几天的问题。

准备编译环境

因为我的Linux是刚安装的,需要安装很多的必要程序。

1
2
yum -y install make gcc -c++ cmake bison-devel  ncurses-devel gcc \
        autoconf automake zlib* fiex* libxml* libmcrypt* libtool-ltdl-devel*

下载MySQL

进入http://dev.mysql.com/downloads/mysql/ 的source/Generic Linux (Architecture Independent), Compressed TAR Archive,文件mysql-5.6.16.tar.gz

1
2
3
wget http: //dev .mysql.com /get/Downloads/MySQL-5 .6 /mysql-5 .6.16. tar .gz
tar xvf mysql-5.6.16. tar .gz
cd mysql-5.6.16

编译源码

接下来组织项目

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
cmake \
-DCMAKE_INSTALL_PREFIX= /usr/local/mysql \
-DMYSQL_DATADIR= /data/mysql/data \
-DSYSCONFDIR= /etc \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DMYSQL_UNIX_ADDR= /tmp/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

注意,这个cmake是替代以前的./configure 步骤。如果你需要更多的参数,请参考http://dev.mysql.com/doc/refman/5.6/en/source-configuration-options.html

有时候会出现类似的问题。

Googlemock was not found. gtest-based unit tests will be disabled. You can run cmake . -DENABLE_DOWNLOADS=1 to automatically download and build required components from source. — If you are inside a firewall, you may need to use an http proxy: export http_proxy=http://example.com:80
  • 使用参数-DENABLE_DOWNLOADS=1 自动下载。
  • 有网络限制,设置http代理export http_proxy=http://example.com:80。环境变量http_proxy 也为 curl 等其他工具所用。尽管 yum 可以识别大写或小写的 http_proxy,但curl 要求环境变量的名称是小写。

如果这个cmake这个步骤有出现问题,解决后重新再cmake一次。如果输出类似这样,那么就好了。

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
-- Running cmake version 2.6.4
-- MySQL 5.6.16
-- Packaging as: mysql-5.6.16-Linux-x86_64
-- HAVE_VISIBILITY_HIDDEN
-- HAVE_VISIBILITY_HIDDEN
-- HAVE_VISIBILITY_HIDDEN
-- Using cmake version 2.6.4
-- Not building NDB
-- Library mysqlclient depends on OSLIBS -lpthread;m;rt;dl
-- GMOCK_SOURCE_DIR:/root/mysql-5.6.16/source_downloads/gmock-1.6.0
-- GTEST_LIBRARIES:gmock;gtest
-- Library mysqlserver depends on OSLIBS -lpthread;m;rt;crypt;dl
-- Configuring done
-- Generating done
-- Build files have been written to: /root/mysql-5.6.16

接着编译源码

1
make && make install

编译时间缓慢,等待中…

修改文件权限,生成数据库

1
2
3
4
5
6
7
groupadd mysql
useradd -r -g mysql mysql
cd /usr/local/mysql
chown -R mysql:mysql .
scripts /mysql_install_db --user=mysql --ldata= /data/mysql/data
chown -R root .
chown -R mysql data

说明:参数--ldata说明你的数据文件存放的目录,如果你使用默认的路径,那么这个参数可以去除。如果你不增加此参数,但是在配置文件(见下方的datadir配置)中指定了其他的目录,那么会在启动MySQL的时候出现类似的提示:

Starting MySQL. ERROR! The server quit without updating PID file (/data/mysql/data/VM_208.pid).

出现这个的解决办法就是增加--ldata参数,指定和配置文件中datadir相同的值,重新执行mysql_install_db即可。

设置配置文件

MySQL 5.6.8开始,就不在分发my.cnf等配置的demo,所以想随便拿一个用都比较麻烦。

my.cnf的配置文件的默认读取顺序为
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=path, if any
~/.my.cnf User-specific options
~/.mylogin.cnf Login path options
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[client]
port=3306
socket= /var/lib/mysql/mysql .sock
default-character- set = utf8
 
[mysqld]
port=3306
bind-address=127.0.0.1
basedir= /usr/local/mysql
datadir= /data/data/mysql/data
socket= /var/lib/mysql/mysql .sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
 
############# default settings  ################
# time zone
default- time -zone = system
character- set -server = utf8
default-storage-engine = InnoDB
 
[mysqld_safe]
log-error= /var/log/mysqld .log
pid- file = /var/run/mysqld/mysqld .pid

我的这个配置比较简单,声明一下常用的变量,如果你需要对性能优化,那么你需要细细研读一下配置文件。可以参考

启动MySQL,开机自动启动设置

手动启动MySQL。

1
2
3
4
cp /usr/local/mysql/support-files/mysql .server /etc/init .d /mysql
/etc/init .d /mysql start
##或者
service mysql start

在上面的步骤后,开机自动启动设置

1
2
3
chkconfig --add mysql
##有的系统需要下面的
chkconfig --level 345 mysql on

可以参考:http://dev.mysql.com/doc/refman/5.6/en/automatic-start.html

修改root密码

默认的密码是空的,很危险,需要修改一下。

在此之前,为方便调用mysql,我们先生成一个mysql的软链。

1
ln -s /usr/local/mysql/bin/mysql /usr/bin/

然后修改密码

1
2
mysql -uroot  -h127.0.0.1 -p
mysql> SET PASSWORD = PASSWORD( '123456' );

将来如果你忘记了root密码,可以参考重置MySQL密码

通过上面的步骤,就可以使用MySQL数据库了,另外可以为mysql安装phpmyadmin作为前端的管理界面。

参考资料


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您提供一些关于在CentOS 8上从源代码编译安装MySQL的步骤。 1. 安装编译MySQL所需的依赖项: ``` sudo dnf install gcc gcc-c++ ncurses-devel cmake make ``` 2. 下载MySQL源代码: 您可以从MySQL官方网站下载MySQL源代码包,下载地址为:https://dev.mysql.com/downloads/mysql/ 3. 解压MySQL源代码包: ``` tar -zxvf mysql-VERSION.tar.gz cd mysql-VERSION ``` 4. 创建MySQL编译目录: ``` mkdir build cd build ``` 5. 运行cmake配置: ``` cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ -DMYSQL_DATADIR=/usr/local/mysql/data \ -DSYSCONFDIR=/etc \ -DWITH_MYISAM_STORAGE_ENGINE=1 \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_MEMORY_STORAGE_ENGINE=1 \ -DWITH_READLINE=1 \ -DWITH_SSL=system \ -DWITH_ZLIB=system \ -DWITH_LIBWRAP=0 \ -DENABLED_LOCAL_INFILE=1 \ -DENABLE_DTRACE=0 \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci ``` 6. 编译MySQL: ``` make ``` 7. 安装MySQL: ``` sudo make install ``` 8. 配置MySQL: ``` sudo groupadd mysql sudo useradd -r -g mysql -s /bin/false mysql sudo chown -R mysql:mysql /usr/local/mysql sudo chown -R mysql:mysql /usr/local/mysql/data sudo cp support-files/my-default.cnf /etc/my.cnf sudo vi /etc/my.cnf ``` 在my.cnf文件中,您可以根据需要进行配置。例如,您可以指定MySQL数据目录的位置,设置MySQL的端口等等。完成后,保存并退出。 9. 初始化MySQL: ``` sudo /usr/local/mysql/bin/mysqld --initialize --user=mysql ``` 10. 启动MySQL: ``` sudo /usr/local/mysql/bin/mysqld_safe --user=mysql & ``` 11. 登录MySQL: ``` sudo /usr/local/mysql/bin/mysql -uroot -p ``` 现在,您已经成功地在CentOS 8上从源代码编译安装了MySQL

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值