Linux源码编译安装MYSQL
一、mysql是什么?
示例:MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),使用最常用的数据库管理语言–结构化查询语言(SQL)进行数据库管理。
二、安装步骤
1.解压
代码如下(示例):
tar xf mysql-5.7.30.tar.gz -C /usr/local/src //解压主包“mysql-5.7.30.tar.gz”到 /usr/local/src 目录
tar xf boost_1_59_0.tar.gz //Boost库是一个可移植、提供源代码的C++库
mv boost_1_59_0 /usr/local/boost //不需要编译 只需要把解压好的boost库文件移动到 /usr/local/boost 目录
2.安装相关依赖
代码如下(示例):
yum -y install gcc-c++ ncurses-devel cmake openssl openssl-devel
也可以一边编译一遍补包,不过我个人比较喜欢先把相关的依赖装好。
3.新建一个Mysql用户,
代码如下(示例):
groupadd -g 27 mysql //创建mysql组
useradd -u 27 -g mysql -M -s /sbin/nologin mysql //创建mysql用户
id mysql // 看一下是否建立成功
uid=27(mysql) gid=27(mysql) 组=27(mysql)
不创建mysql家目录,是无法登陆系统的。建立MySQL数据库必须拥有一个mysql账户,账户是用户登录的钥匙,也可以理解为一个登陆凭证,就好像现在物业公司的门禁系统一样。
mkdir /data/mysql //创建存放mysql数据库的目录,建议该目录独立挂载,易于备份管理。
chown mysql:mysql /data/mysql/ //让该目录和组属于mysql
cd /usr/local/src/mysql-5.7.30 // 进入到解压出来的mysql目录下在编译
4.开始编译 (必须进入mysql目录下编译)
执行下面的命令开始,注意如果cmake 的检测过程中,如果出现错误,需要删除缓存文件(rm CMakeCache.txt
),然后重新cmake,
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql57 -DMYSQL_DATADIR=/data/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DMYSQL_TCP_PORT=3306 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DMYSQL_USER=mysql -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/boost -DWITH_INNODB_MEMCACHED=ON
cmake 参数解析 :----------------------------------------------------------------
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql57 指定安装路径
-DMYSQL_DATADIR=/data/mysql 指定数据存放路径
-DDEFAULT_CHARSET=utf8
-DDEFAULT_COLLATION=utf8_general_ci 设置字符校验集
-DMYSQL_TCP_PORT=3306
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock 设置套接字生成路径
-DMYSQL_USER=mysql
-DWITH_MYISAM_STORAGE_ENGINE=1 ##存储引擎的支持
-DWITH_INNOBASE_STORAGE_ENGINE=1
-DWITH_ARCHIVE_STORAGE_ENGINE=1
-DWITH_BLACKHOLE_STORAGE_ENGINE=1
-DWITH_MEMORY_STORAGE_ENGINE=1
-DDOWNLOAD_BOOST=1
-DWITH_BOOST=/usr/local/boost 指定Boost扩展源码路径
make //编译成功后执行make命令,此过程可能需要半小时,需要耐心等待
make install //开始安装,注意磁盘空间的空间是否足够一般需要6-8G
## 5.安装完成后,需要对一些配置文件进行配置
首先是(etc/my.cnf
)文件
[client]
port=3306
socket=/data/mysql/mysql.sock //为MySQL客户程序与服务器之间的本地通信指定一个套接字文件
[mysqld]
character-set-server=utf8 //指定默认字符集
collation-server=utf8_general_ci //
skip-name-resolve
user=mysql //用户名
port=3306 //指定端口
basedir=/usr/local/mysql57
datadir=/data/mysql
tmpdir=/tmp
socket=/data/mysql/mysql.sock
log-error=/data/mysql/mysqld.log //错误日志文件
pid-file=/data/mysql/mysqld.pid //储存进程号的文件
上面只是很少一部分的配置,此文件很重要,以后还要进行很多的配置来帮助我们更好的使用mysql。
然后将编译好的mysql bin里面的命令,加入到 $PATH 变量中在/etc/profile 最后一行中添加
vim /etc/profile
PATH=$PATH:/usr/local/mysql57/bin
export PATH
source /etc/profile 重新读取生效
6.初始化数据库,
代码如下(示例):
/usr/local/mysql57/bin/mysqld --defaults-file=/etc/my.cnf --initialize --user=mysql //这里我的目标路径是/data/mysql 注意一定要是**空目录**
defaults-file : 指定MySQL配置文件路径 ##这里面有我们刚才配置好的参数
initialize : 初始化随机密码,注意,初始化的密码是一个过期密码,登录后需要立刻修改密码
user: 指定运行用户
7.找到自己的初始化密码,
默认在 mysqld.log ,自己的日志文件中/data/mysql/
可以看到此时的密码为FQ…l
8.启动MYSQL数据库,
代码如下(示例):
/usr/local/mysql57/support-files/mysql.server start
mysql57/bin/mysql -uroot -p"jslw4.TgDvfV" // 这个密码就是日志中生成的密码
登录成功后提示需要修改密码
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123123'; //修改密码为123123
mysql> flush privileges; //立刻生效
如果觉得每次都输入密码太麻烦就把密码写进mysql的(etc/my.cnf
)文件里,这样就不用输入密码了,不过要注意这具有一定的风险。
9.现在可以开始使用mysql了