在Ubuntu中编译安装MySQL

此文所述编译安装流程,在Ubuntu Server下能够成功。但是在Ubuntu桌面版下,存在一个问题:/tmp/mysql.sock文件无法生成,mysql也在启动的时候提示找不到这个文件。多方咨询,依然无解。如果你不想太麻烦,可以直接在ubuntu中使用apt的方式来安装mysql,请参考:在ubuntu中使用apt安装mysql
第一次学习在Ubuntu Server的环境下,编译安装MySQL数据,在此文中记录整个编译安装的过程和各种细节。

Ubuntu Server:16.04

MySQL版本:5.6.34

1,准备安装环境

用root登录ubuntu之后(如果不能root登录,在下述命令前加sudo,或者参考:如何使用root登录ubuntu系统?),用如下命令准备环境:

apt install cmake

apt install libncurses5-dev

apt install bison (warning…)

以上3个软件包都是编译安装MySQL需要用到的,当然,还需要确保你的ubuntu上已经有了Gcc编译器等工具(可参考:在Ubuntu Server上安装Gcc编译器)。

 

2, 下载并解压MySQL标准源码包

可以使用搜狐的镜像来下载:

wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.34.tar.gz

tar zxvf mysql-5.6.34

然后,当前目录下就多了一个mysql-5.6.34的文件夹,cd进去,准备开始cmake。

3, cmake时的参数

cmake就像我们编译安装Apache时用的configure,cmake不是make的代替。

我的输入是:

cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/tmp/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

回车,一切OK.

第1步中提到的3个软件包,如果不全,cmake的时候会有错误提示,这个时候再安装也可以,只是记得在下次cmake的时候,先用下面的命令删除上一次的缓存文件:rm CMakeCache.txt
4, make && make install

如果你之前make过,请先make clean一下。

注意:make && make install是一个命令行输入的,&&表示按顺序执行命令,&&可以在Linux中可以把多个命令串起来使用,我现在就是make clean && make && make install这样用。
MySQL的编译安装时间比较长,你可以去喝杯茶。编译过程有warning,但是没有error,就不用管了。

5, 创建组和用户,并运行mysql_install_db脚本

ubuntu系统中需要有以mysql未名城的组合用户,如果没有,请创建,使用下面的命令:

groupadd mysql

useradd -M -g mysql mysql

然后将刚才安装的MySQL文件夹的所有者赋予mysql,命令如下:

chown -R mysql:mysql /usr/local/mysql

给数据库目录可读可写的权限:

chmod 777 -R /usr/local/mysql/data/

拷贝my.cnf文件(使用默认路径,编译安装时未指定路径):

cp /usr/local/mysql/support-files/my-default.cnf /usr/local/mysql/my.cnf

编辑配置my.cnf文件(默认里面全是注释),添加:

basedir = /usr/local/mysql

datadir = /usr/local/mysql/data

进入/usr/local/mysql,执行mysql_install_db脚本,命令是:

scripts/mysql_install_db –user=mysql

(这个脚本要使用my.cnf文件,所以切换到/usr/local/mysql这个目录下执行,否则会失败)

如果不在my.cnf文件中写如basedir和datadir,执行mysql_install_db脚本的时候,就会有这样的错误:
Could not find ./bin/my_print_defaults
6, 启动MySQL

一个命令启动MySQL:

/usr/local/mysql/support-files/mysql.server start (| stop)

正常启动,几乎没有任何提供,查看进程使用ps,请见下图:

MySQL编译安装成功
MySQL编译安装成功
7, 给mysql的root账户设置一个密码

先启动mysqld进程,然后在/usr/local/mysql目录下输入:

./bin/mysqladmin -u root password ‘new-password’

 

总有人问:我安装的MySQL使用的配置文件在哪里?或者,我的MySQL到底使用的是哪个配置文件?我们刚才安装的时候,并没有指定my.cnf的位置,默认就在主路径下面。还不满意?请参考:查看MySQL使用的配置文件my.cnf的位置?

未经允许不得转载:淘淘源码吧 » 在Ubuntu中编译安装MySQL