Ubuntu14.04编译安装MySQL5.6.16
前言:
MySQL5.X系列的源码安装有了一些小变化,编译源码的时候不再使用configure,换成了cmake
准备工作:
- make bison g++ build-essential libncurses5-dev
- 编译安装cmake
wget https://cmake.org/files/v3.10/cmake-3.10.1.tar.gz tar -zxvf cmake-3.10.1.tar.gz cd cmake-3.10.1 ./bootstrap make && make install
- 设置用户、用户组和目录权限
sudo groupadd mysql sudo useradd -g mysql mysql -s /bin/false #创建用户mysql并加入到mysql组,不允许mysql用户直接登录系统 sudo mkdir –p /usr/local/mysql #创建MySQL安装目录 sudo mkdir -p /usr/local/mysql/data #创建MySQL数据库目录 sudo mkdir -p /usr/local/mysql/log #创建MySQL日志 sudo chown -R mysql:mysql /usr/local/mysql/data #更改权限 sudo chown -R mysql:mysql /usr/local/mysql #更改权限
开始安装MySQL:
wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.16.tar.gz tar -zxvf mysql-5.6.16.tar.gz cd mysql-5.6.16 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 make && make install
CMAKE_INSTALL_PREFIX:指定MySQL程序的安装目录,默认/usr/local/mysql
DEFAULT_CHARSET:指定服务器默认字符集,默认latin1
DEFAULT_COLLATION:指定服务器默认的校对规则,默认latin1_general_ci
ENABLED_LOCAL_INFILE:指定是否允许本地执行LOAD DATA INFILE,默认OFF
WITH_COMMENT:指定编译备注信息
WITH_xxx_STORAGE_ENGINE:指定静态编译到mysql的存储引擎,MyISAM,MERGE,
MEMBER以及CSV四种引擎默认即被编译至服务器,不需要特别指定。
WITHOUT_xxx_STORAGE_ENGINE:指定不编译的存储引擎
SYSCONFDIR:初始化参数文件目录
MYSQL_DATADIR:数据文件目录
MYSQL_TCP_PORT:服务端口号,默认3306
MYSQL_UNIX_ADDR:socket文件路径,默认/tmp/mysql.sock
创建服务:
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
创建命令软连接,设置环境变量:
ln -s /usr/local/mysql/bin/mysql /usr/bin/
初始化数据库:
scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/ --user=mysql
配置文件:vi /usr/local/mysql/my.cnf
[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/mysql/data socket=/tmp/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/lib/mysql/mysqld.pid
启动数据库:/etc/init.d/mysql start
初始化密码: /usr/local/mysql/bin/mysqladmin -u root password ******
登录数据库:mysql -u root mysql -p
更改密码:
/etc/init.d/mysql stop
#下面方式为了绕过root
/usr/local/mysql/bin/mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
#此时重新打开一个scrt窗口,使用下面命令登录安全模式下的mysql
mysql -u root mysql -p
mysql>use mysql;
mysql>update user set Password=password('newpassword') where User='root';
mysql>flush privileges;
#退出,重新启动mysql服务即可