在Ubuntu-12.04.2上编译安装MySQL-5.6.16[安装笔记]

内容纲要

以下安装中涉及的几点需要提前说明的问题:

1. 所有下载的文件将保存在 /usr/local/src/ 目录下

2. mysql 将以mysql用户运行,而且将加入 service 开机自动运行

3. mysql 将被安装在 /usr/local/mysql/ 目录下

4. mysql 默认安装使用 utf8mb4 字符集

5. mysql 的数据和日志文件保存在 /var/mysql/ 对应目录下

6. mysql 的配置文件保存于/var/mysql/my.cnf

1: 下载安装编译MySQL源码需要的库

 sudo apt-get install build-essential libncurses5-dev cmake

2: 下载并解压MySQL源码包

cd /usr/local/src/

sudo wget -O mysql-5.6.16.tar.gz https://www.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.16.tar.gz/from/https://cdn.mysql.com/

sudo tar -zxvf mysql-5.6.16.tar.gz

 

sudo /usr/sbin/groupadd mysql

sudo /usr/sbin/useradd -g mysql mysql

sudo gpasswd -a mysql 'sdcard-rw' //手机加入读写sdcard权限

 

sudo mkdir -p /var/mysql/

sudo mkdir -p /var/mysql/data/

sudo mkdir -p /var/mysql/log/

sudo chmod 777 /var/mysql/data

3: 使用cmake生成安装文件

 

cd mysql-5.6.16

sudo cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8mb4 -DDEFAULT_COLLATION=utf8mb4_general_ci -DWITH_EXTRA_CHARSETS:STRING=utf8mb4,gbk -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 -DMYSQL_DATADIR=/var/mysql/data

4: 安装MySQL

sudo make

sudo make install

 

sudo chmod +w /usr/local/mysql

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

sudo chown -R mysql:mysql /var/mysql/

 

sudo ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib/libmysqlclient.so.18

 

 find -name my-default.cnf

sudo cp my-default.cnf /var/mysql/my.cnf  (注意:my-large.cnf适用于1G内存左右的服务器,可以根据自己配置情况选用my-large.cnf 或 my-huge.cnf 等不同配置)

 

sudo cp mysql.server /etc/init.d/mysqld

四. 配置启动MySQL 5.6.10

 

1. 若有需要请先修改 mysql 的配置 my.cnf

vi /var/mysql/my.cnf

修改 user=root

 我的配置

# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html
[mysqld]
user=root
port=3306
log-error=/var/mysql/log/error.log
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
# These are commonly set, remove the # and set as required.
# basedir = .....
# datadir = .....
# port = .....
# server_id = .....
# socket = .....
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 
max_allowed_packet=200M
character-set-server=utf8mb4

2. mysql 初始化安装

/usr/local/mysql/scripts/mysql_install_db \

--defaults-file=/var/mysql/my.cnf \

--basedir=/usr/local/mysql \

--datadir=/var/mysql/data \

--user=mysql

 

即系一行

sudo /usr/local/mysql/scripts/mysql_install_db --defaults-file=/var/mysql/my.cnf --basedir=/usr/local/mysql --datadir=/var/mysql/data --user=mysql

 

 

3. 将 mysql 加入开机启动

 

sudo chmod +x /etc/init.d/mysqld

 

 

vi /etc/init.d/mysqld (sudo vim /etc/init.d/mysqld 编辑此文件,查找并修改以下变量内容:)

basedir=/usr/local/mysql

datadir=/var/mysql/data

 

保存退出

 

sudo chkconfig --add mysqld

===========================================

Error:

sudo: chkconfig:找不到命令

Fixed:

sudo apt-get install chkconfig

===========================================

 

 

sudo chkconfig --level 345 mysqld on

===========================================

Error:

/sbin/insserv: 没有那个文件或目录

Fixed:

sudo ln -s /usr/lib/insserv/insserv /sbin/insserv

 

===========================================

 

/usr/local/mysql/bin/mysqladmin -u root password new password

eg==>sudo /usr/local/mysql/bin/mysqladmin -u root password root

 

===========================================

Error:

/usr/local/mysql/bin/mysqladmin: connect to server at 'localhost' failed

error: 'Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)'

Check that mysqld is running and that the socket: '/tmp/mysql.sock' exists!Fixed:

 

Fixed:(本次原因为 系统有mysql的僵尸进程,可以干掉进程或重启)

 

reboot

===========================================

 

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

ln -s /var/mysql/my.cnf /etc/my.cnf   使配置文件起作用

 

Test:

mysql -u root -p

 

 

4. 启动 mysql

sudo service mysqld restart

错误查看错误日志,如果有权限问题修改/var/mysql/data 访问权限

发表回复