介绍
这篇文档是自己学习mysql编译安装而作,mysql的编译安装会受到各种版本的影响,只要版本对的话,还是很顺利的。
最开始编写的文档里面遇到了一些mysql编译安装的问题,可以作为参考:
版本信息
Ubuntu 16.04
mysql-5.7.21
Boost 1.59.0
gcc 5.4.0
mysql 的编译安装
STEP 1 配置环境
sudo apt-get update
sudo apt-get install cmake
sudo apt-get install git
sudo apt-get install gcc g++
sudo apt-get install libncurses5 libncurses5-dev
sudo apt-get install bison
STEP 2 下载boost
cd /usr/local
sudo wght https://jaist.dl.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz
sudo tar -xzvf boost_1_59_0.tar.gz
sudo mv boost_1_59_0.tar.gz boost
STEP 3 编译安装mysql
# 下载mysql
cd /usr/local
sudo wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.21.tar.gz
sudo tar -xzvf mysql*.tar.gz
# 添加用户
sudo groupadd mysql
sudo useradd -r -g mysql mysql
# 创建mysql的安装目录
sudo mkdir /usr/local/mysql
# 创建存放mysql数据的文件
sudo mkdir /usr/local/mysql/data
# 更改用户
sudo chown -R mysql.mysql /usr/local/mysql
# 预编译mysql
cd /usr/local/mysql-5.7.21
sudo cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/loca/mysql/data -DWITH_BOOST=/usr/local/boost -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DSYSCONFDIR=/etc -DEXTRA_CHARSETS=all
预编译的各项参数:
-DCMAKE_INSTALL_PREFIX:安装路径
-DMYSQL_DATADIR:数据存放目录
-DWITH_BOOST:boost源码路径
-DSYSCONFDIR:my.cnf配置文件目录
-DEFAULT_CHARSET:数据库默认字符编码
-DDEFAULT_COLLATION:默认排序规则
-DENABLED_LOCAL_INFILE:允许从本文件导入数据
-DEXTRA_CHARSETS:安装所有字符集
# 编译安装
sudo make
sudo make install
STEP 3 初始化mysql
cd /usr/local/mysql
sudo ./bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
STEP 3 my.cnf配置文件
cd /etc
sudo touch my.cnf
sudo vim my.cnf
[client]
port=3306socket=/usr/local/mysql/mysqld.sock
[mysqld]
port=3306socket=/usr/local/mysql/mysqld.sock
pid-file=/usr/local/mysql/Data/mysql.pid
basedir=/usr/local/mysql
datadir=/usr/local/mysql/Data
STEP 4 开启mysql
配置完my.cnf文件后,即可开启mysql
cd /usr/local/mysql/bin
sudo ./mysqld --user=mysql
2018-07-22 20:49:27 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for moredetails).2018-07-22 20:49:27 0 [Note] mysqld (mysqld 5.6.25-log) starting as process 11891...2018-07-22 20:49:27 11891 [Note] Plugin 'FEDERATED'is disabled.2018-07-22 20:49:27 11891[Note] InnoDB: Using atomics to ref count buffer pool pages2018-07-22 20:49:27 11891[Note] InnoDB: The InnoDB memory heap is disabled2018-07-22 20:49:27 11891[Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins2018-07-22 20:49:27 11891[Note] InnoDB: Memory barrier is not used2018-07-22 20:49:27 11891 [Note] InnoDB: Compressed tables use zlib 1.2.3
2018-07-22 20:49:27 11891[Note] InnoDB: Using CPU crc32 instructions2018-07-22 20:49:27 11891 [Note] InnoDB: Initializing buffer pool, size = 128.0M
2018-07-22 20:49:27 11891[Note] InnoDB: Completed initialization of buffer pool2018-07-22 20:49:27 11891 [Note] InnoDB: Highest supported fileformat is Barracuda.2018-07-22 20:49:27 11891 [Note] InnoDB: The log sequence numbers 1629226 and 1629226 in ibdata files do not match the log sequence number 1629246 in the ib_logfiles!
2018-07-22 20:49:27 11891 [Note] InnoDB: Database was not shutdown normally!
2018-07-22 20:49:27 11891[Note] InnoDB: Starting crash recovery.2018-07-22 20:49:27 11891[Note] InnoDB: Reading tablespace information from the .ibd files...2018-07-22 20:49:27 11891 [Note] InnoDB: Restoring possible half-written data pages2018-07-22 20:49:27 11891[Note] InnoDB: from the doublewrite buffer...2018-07-22 20:49:28 11891 [Note] InnoDB: 128rollback segment(s) are active.2018-07-22 20:49:28 11891 [Note] InnoDB: Waiting forpurge to start2018-07-22 20:49:28 11891 [Note] InnoDB: 5.6.25 started; log sequence number 1629246
2018-07-22 20:49:28 11891 [Note] Recovering after a crash using mysql-bin2018-07-22 20:49:28 11891[Note] Starting crash recovery...2018-07-22 20:49:28 11891[Note] Crash recovery finished.2018-07-22 20:49:28 11891 [Note] Server hostname (bind-address): '*'; port: 3306
2018-07-22 20:49:28 11891[Note] IPv6 is available.2018-07-22 20:49:28 11891 [Note] - '::' resolves to '::';2018-07-22 20:49:28 11891 [Note] Server socket created on IP: '::'.
InnoDB: wrong number of columnsinSYS_INDEXES record2018-07-22 20:49:28 11891 [Warning] InnoDB: Cannot open table mysql/slave_worker_info from the internal data dictionary of InnoDB though the .frm file for the table exists. See http://dev.mysql.com/doc/refman/5.6/en/innodb-troubleshooting.html for how you can resolve the problem.
2018-07-22 20:49:28 11891 [Note] Event Scheduler: Loaded 0events2018-07-22 20:49:28 11891 [Note] mysqld: ready forconnections.
Version:'5.6.25-log' socket: '/usr/local/mysql/mysqld.sock' port: 3306 Source distribution
注:出现上面的就说明开启了
配置mysql环境变量
为了开启mysql服务方便,我们接下来配置mysql的环境变量
# 修改profile配置文件
sudo vim /etc/profile
# 在配置文件中添加下面的代码
export MYSQL_HOME=/usr/local/mysql #mysql的安装目录
export PATH=$PATH:$MYSQL_HOME/bin:
# 使配置文件生效
source /etc/profile #使配置文件的修改生效!
# 修改 /etc/sudoers文件:
Defaults !env_reset #修改此处!取消重新配置环境变量!
Defaults mail_badpass
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"
# 使配置文件生效
source /etc/sudoers
# 开启mysql服务
sudo -i # 要在root权限下
mysqld --user=mysql #这样就可以直接开启mysql了^_^
mysql -uroot -p #未设置密码,直接ENTER
mysql开启成功
进入mysql成功
总结
mysql的编译安装一定要留意版本问题,有时候不是方法不对,而是版本的问题,才造成了无法安装成功
文章有不足之处,还请各位看客指出
People people for me , me for people people!!