Linux源码编译安装MySql
Linux安装MySQL的方式有多种,为了加深理解和自定义安装目录,此文将演示使用源码编译的方式在Linux服务器安装MySql数据库,由于我的服务器已经安装了MySql,版本是5.7.38
。所以为了演示,我要先将原先的数据库备份,再卸载再重装...
# 备份和卸载数据库
编写语句备份数据库,-B 备份整个数据库包含,创建语句
mysqldump -h localhost -u root -p --all-databases > /home/mysql_bak/#{DATE}.sql --备份全库
mysqldump -h localhost -u root -p -B testdb > /home/mysql_bak/testdb.sql
mysqldump -h localhost -u root -p -B testdb1 > /home/mysql_bak/testdb1.sql
...
2
3
4
卸载MySql,先停止再删除mysql服务
systemctl stop mysql #服务方式
mysqladmin -u root shutdown #命令方式
rm -f /etc/rc.d/init.d/mysqld
systemctl daemon-reload
2
3
4
如果是使用rpm或yum包管理工具方式安装的,则先看安装状态,运行命令
rpm -qa | grep -i mysql
#...或
yum list installed | grep mysql
2
3
如果有结果输出则表示已安装,通过运行命令卸载
rpm -e --nodeps mysql* #强力删除,--nodeps 一并删除依赖文件
#...或
yum remove -y mysql*
2
3
查找对应mysql文件,并删除
find / -name mysql
find / -name mysql |xargs rm -rf #删除
2
通过以上操作,mysql卸载完成
# 下载MySql源码包
1.mysql官方下载地址:https://dev.mysql.com/downloads/mysql/ (opens new window),选择对应的版本下载到本地。
注意源码有2个版本可选择,由于mysql从5.7版本开始便依赖boost库,所以有包含boost版和不包含boost版;如果选择不包含boost则预编译的时候需要单独安装boost,第一次安装推荐选择包含boost版。
boost官方下载地址:https://sourceforge.net/projects/boost/files/boost/ (opens new window)
将源码包上传到服务器
/usr/local/src
目录
scp ./mysql-5.7.38.tar.gz root@119.23.233.64:/usr/local/src
2.或者使用命令直接下载到服务器
cd /usr/local/src
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.38.tar.gz
# 编译源码包,并安装
解压压缩文件
tar -xzvf mysql-5.7.38.tar.gz
安装编译工具
yum -y install make cmake gcc gcc-c++ ncurses ncurses-devel libaio libaio-devel
创建mysql安装目录、数据库存放目录、日志目录
mkdir -p /usr/local/webserver/mysql
mkdir -p /usr/local/webserver/mysql/data
mkdir -p /usr/local/webserver/mysql/logs
mkdir -p /usr/local/webserver/mysql/binlog
进入到MySQL的源码目录,预编译,配置安装目录
cd /usr/local/src/mysql-5.7.38
cmake . \
-DCMAKE_INSTALL_PREFIX=/usr/local/webserver/mysql \
-DMYSQL_DATADIR=/usr/local/webserver/mysql/data \
-DSYSTEMD_PID_DIR=/usr/local/webserver/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/webserver/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=all \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_BOOST=boost
# -DWITH_SYSTEMD=1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
参数说明:
- -DCMAKE_INSTALL_PREFIX=/usr/local/mysql 指定安装目录
- -DINSTALL_DATADIR=/usr/local/mysql/data 指定数据库存放目录
- -DDEFAULT_CHARSET=utf8 使用utf8字符
- -DDEFAULT_COLLATION=utf8_general_ci 校验字符
- -DWITH_SYSTEMD 决定是否安装mysqld_safe
预编译报错通常是因为缺少依赖的包造成的,把缺少的包安装上再重新进行编译。
如上错误是boost位置错误导致改为正确位置:-DWITH_BOOST=../boost,再重新预编译,重新编译时,需要清除旧的对象文件和缓存信息
make clean \
rm -f CMakeCache.txt
运行命令,正式编译并安装,此过程一般比较久,请耐心等待
make && make install
经过以上操作,编译安装完成。
# 配置MySql
进入/etc目录编辑my.cnf文件(windows系统下为my.ini),如果没有my.cnf文件则新建此文件
touch /etc/my.cnf
vim /etc/my.cnf
[client]
port = 3306
socket = /usr/local/webserver/mysql/mysql.sock
[mysql]
port = 3306
default-character-set = utf8
socket = /usr/local/webserver/mysql/mysql.sock
[mysqld]
user = mysql
port = 3306
character_set_server = utf8
default-storage-engine = INNODB
pid-file = /usr/local/webserver/mysql/mysqld.pid
basedir = /usr/local/webserver/mysql
datadir = /usr/local/webserver/mysql/data
socket = /usr/local/webserver/mysql/mysql.sock
#免密登录,用于忘记root密码,重置密码时使用
#skip-grant-tables
#log_output = FILE
# 二进制日志
server-id = 1
binlog-format = ROW
log_bin = /usr/local/webserver/mysql/logs/binlog # 二进制日志名称
# 错误日志
log_error = /usr/local/webserver/mysql/logs/error.log
# 常规查询日志
#general_log = 0
#general_log_file = /usr/local/webserver/mysql/logs/general.log
# 慢查询日志
slow_query_log = 1
slow_query_log_file = /usr/local/webserver/mysql/logs/slow.log
long_query_time = 3
[mysqldump]
quick
max_allowed_packet = 32M
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
配置环境变量
echo 'export MYSQLPATH=/usr/local/webserver/mysql' >> /etc/profile
echo 'export PATH=$MYSQLPATH/bin:$MYSQLPATH/lib:$PATH' >> /etc/profile
source /etc/profile
增加权限,不然日志无法写入
chown mysql:mysql /etc/my.cnf
chown -R mysql:mysql /usr/local/webserver/mysql
chmod 770 -R /usr/local/webserver/mysql
初始化数据库命令
mysqld --initialize --user=mysql
初始化成功后,可以在输出日志,或者logs/error.log
日志里面找到root管理员的初始密码
创建MySQL服务
cd /usr/local/webserver/mysql
cp support-files/mysql.server /etc/rc.d/init.d/mysqld
chkconfig --add mysqld
chkconfig --level 35 mysqld on #设置开机启动
2
3
4
启动MySQL服务
systemctl start mysql
systemctl status mysql
出现如下界面,说明MySQL已经安装完成,并部署成功...
# 连接MySQL
通过以上操作成功将mysql数据库安装到服务器,接下来我们在服务器用mysql客户端连接数据库,进行root管理员的配置
首次登录,必须先修改root的初始秘密才能进行其他操作
alter user 'root'@'localhost' identified by 'xxxxx';
设置数据库允许远程登录
update user set host = '%' where user = 'root';
flush privileges;
2
再使用客户端连接工具测试,是否能连接到数据库
客户端连接成功,可以看到系统数据库,并查询到数据
以上就是,在Linux服务器使用源码方式安装MySQL数据库,的全部步骤
# 还原备份
最后需要将之前备份的数据库进行还原
mysql -h localhost -u root -p < testdb.sql