1、通过编译、二进制安装MySQL5.7
一、源码编译安装MySQL最新版本5.7.36(CentOS7):
步骤:
# 安装依赖包
yum -y install gcc gcc-c++ cmake bison bison-devel zlib-devel libcurl-devel libarchive-devel boost-devel ncurses-devel gnutls-devel libxml2-devel openssl-devel libevent-devel libaio-devel perl-Data-Dumper
# 准备用户和数据目录
useradd -r -s /sbin/nologin -d /data/mysql mysql
mkdir /data/mysql -p
chown -R mysql.mysql /data/mysql
# 下载并解压源码包
wget https://mirrors.tuna.tsinghua.edu.cn/mysql/downloads/MySQL-5.7/mysql-5.7.36.tar.gz
tar zxvf mysql-5.7.36.tar.gz -C /usr/local/src
# mysql5.7.5以后的版本,编译安装需要用到c++的boost库,最低要求1.59版wget http://nchc.dl.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz
tar zxf boost_1_59_0.tar.gz
mv boost_1_59_0 /usr/local/boost
# 进入目录编译(编译时虚拟机的内存最少4G,否则会出现错误)
cd /usr/local/src/mysql-5.7.36
cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DMYSQL_USER=mysql \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITHOUT_MROONGA_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_READLINE=1 \
-DWITH_SSL=system \
-DWITH_ZLIB=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/usr/local/boost
make -j 16 && make install (-j 16 16是cpu核数)
# 准备环境变量
echo 'PATH=/apps/mysql/bin:$PATH' > /etc/profile.d/mysql.sh#各个窗口之间不一定是同步(Moba中实验)
. /etc/profile.d/mysql.sh #执行脚本
# 准备配置文件
cp /etc/my.cnf{,.bak}
vim /etc/my.cnf
[mysqld]
datadir=/data/mysql
skip_name_resolve=1
socket=/data/mysql/mysql.sock
log-error=/data/mysql/mysql.log
pid-file=/data/mysql/mysql.pid
[client]
socket=/data/mysql/mysql.sock
# 初始化数据库,并生成随机密码
mysqld --initialize --user=mysql --datadir=/data/mysql #初始化脚本时会报错。解决:把/data/mysql下的目录清空(本次操作的错误)
# 准备启动脚本
cp /apps/mysql/support-files/mysql.server /etc/init.d/mysqld
chkconfig --add mysqld
service mysqld start
# 查看随机密码
grep password /data/mysql/mysql.log
# 安全初始化
mysql_secure_installation
#修改随机密码,输入用户名和密码后进行登录。
mysqladmin -uroot passwd 000000
mysql -uroot -p000000
安装成功:
[22:44:21 root@CS7-VM8-10 ~]#mysqld --initialize --user=mysql --datadir=/data/mysql
[22:47:48 root@CS7-VM8-10 ~]#grep password /data/mysql/mysql.log
2022-05-21T14:47:45.653344Z 1 [Note] A temporary password is generated for root@localhost: j1OEAe3w07#s
[22:48:14 root@CS7-VM8-10 ~]#mysql -uroot -p'j1OEAe3w07#s'
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/data/mysql/mysql.sock' (2)
[22:48:35 root@CS7-VM8-10 ~]#systemctl start mysqld
[22:48:45 root@CS7-VM8-10 ~]#mysql -uroot -p'j1OEAe3w07#s'
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.36
Copyright (c) 2000, 2021, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> exit
Bye
本次编译安装所出现的错误:
- 虚拟机的内存安排不足
- /data/mysql目录未清空
解决:
二、二进制安装MySQL5.7最新版: (CentOS8)
[11:07:41 root@CS8-VM8-10 local][#history
#创建好用户和组
1 2022-05-20 09:11:44 groupadd mysql
2 2022-05-20 09:12:17 useradd -r -g mysql -s /bin/false mysql
[10:33:48 root@CS8-VM8-10 etc][#history
1 2022-05-20 09:11:22 yum install -y libaio numactl-libs #安装相关的包
2 2022-05-20 09:12:54 rz -E #Windows中下载好的MySQL5.7.38传输到Linux中。
6 2022-05-20 09:16:36 tar xf mysql-5.7.38-linux-glibc2.12-x86_64.tar.gz -C /usr/local #将压缩包解压缩至/usr/local中
7 2022-05-20 09:17:43 cd /usr/local # 进入/usr/local中
9 2022-05-20 09:17:47 ll
10 2022-05-20 09:18:20 ln -s mysql-5.7.38-linux-glibc2.12-x86_64/ mysql #创建软链接,注:一定要进入/usr/local中
11 2022-05-20 09:18:45 chown -R root:root /usr/local/mysql/ #修改该文件夹的权限为root:root
12 2022-05-20 09:19:29 echo 'PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh #为了后续方便运行,加入PATH变量中。并且重定向至/etc/profile.d(应用程序启动时存放的脚本所在目录)中取名叫mysql.sh(该应用程序叫mysql,为方便所以叫mysql.sh)
13 2022-05-20 09:19:29 . /etc/profile.d/mysql.sh #执行该脚本
14 2022-05-20 09:19:58 echo $PATH #校验是否成功的加入PATH变量中。
/usr/local/mysql/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin #成功加入
15 2022-05-20 09:20:16 cd
16 2022-05-20 09:21:23 cp /etc/my.cnf{,.bak} #参照/etc/my.cnf文件格式。注:CentOS7中默认有,而8中没有。
17 2022-05-20 09:21:58 cat /etc/my.cnf
18 2022-05-20 09:22:33 cd /etc
19 2022-05-20 09:22:34 ll
20 2022-05-20 10:29:35 vim /etc/my.cnf #写相关的配置文件
#格式如下:
[mysqld]
datadir=/data/mysql
skip_name_resolve=1
socket=/data/mysql/mysql.sock
log-error=/data/mysql/mysql.log
pid-file=/data/mysql/mysql.pid
[client]
socket=/data/mysql/mysql.sock
21 2022-05-20 10:30:42 mysqld --initialize-insecure --user=mysql --datadir=/data/mysql #生成root密码,且为空
22 2022-05-20 10:31:38 cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld #把MySQL的服务复制并放入/etc/init.d中。
23 2022-05-20 10:31:58 chkconfig --add mysqld #利用chkconfig命令,增加mysqld服务.
chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息。注:chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接。
24 2022-05-20 10:32:31 systemctl start mysqld.service #启动mysqld服务。其端口号为:3306。
25 2022-05-20 10:33:02 mysqladmin -uroot passwd 000000 #修改前面生成的空密码为指定密码
27 2022-05-20 10:33:23 mysql #修改了密码后,直接输入mysql不能直接登录
28 2022-05-20 10:33:35 mysql -uroot -p000000 #修改密码后,输入用户名和密码后可以进行登录。
[10:33:50 root@CS8-VM8-10 etc][#mysql -uroot -p000000
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 5.7.38 MySQL Community Server (GPL)
Copyright (c) 2000, 2022, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> #出现这个。说明登录完成。
2、二进制安装mariadb10.4
与二进制安装MySQL类似。(注释省略)
[22:17:59 root@CS8-VM8-10 ~][#yum -y install libaio numactl-libs
Last metadata expiration check: 0:25:45 ago on Mon 23 May 2022 09:54:01 PM CST.
Package libaio-0.3.112-1.el8.x86_64 is already installed.
Package numactl-libs-2.0.12-13.el8.x86_64 is already installed.
Dependencies resolved.
Nothing to do.
Complete!
[22:19:47 root@CS8-VM8-10 ~][#groupadd mysql
[22:20:24 root@CS8-VM8-10 ~][#useradd -r -g mysql -s /bin/false mysql
[22:20:44 root@CS8-VM8-10 ~][#
1 2022-05-23 22:18:05 rz -E
2 2022-05-23 22:19:18 ll
3 2022-05-23 22:21:10 tar zxvf mariadb-10.4.25-linux-systemd-x86_64.tar.gz -C /usr/local
4 2022-05-23 22:22:11 cd /usr/local
5 2022-05-23 22:22:39 ln -s mariadb-10.4.25-linux-systemd-x86_64/ mysql
6 2022-05-23 22:23:07 chown -R mysql:mysql mariadb-10.4.25-linux-systemd-x86_64/
7 2022-05-23 22:23:09 ll
8 2022-05-23 22:23:58 chown -R mysql:mysql mysql
9 2022-05-23 22:23:59 ll
10 2022-05-23 22:24:07 cd
11 2022-05-23 22:24:54 echo 'PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh
12 2022-05-23 22:25:03 . /etc/profile.d/mysql.sh
13 2022-05-23 22:25:10 echo $PATH
14 2022-05-23 22:25:23 mkdir /data/mysql -p
15 2022-05-23 22:26:08 chown -R mysql:mysql /data
16 2022-05-23 22:26:27 vim /etc/my.cnf
17 2022-05-23 22:29:02 cd /usr/local
18 2022-05-23 22:29:03 ll
19 2022-05-23 22:29:26 cd mysql/
20 2022-05-23 22:29:27 ll
21 2022-05-23 22:30:12 scripts/mysql_install_db --user=mysql --datadir=/data/mysql
22 2022-05-23 22:31:20 cp /usr/local/mysql/support-files/systemd/mariadb.service /lib/systemd/system
23 2022-05-23 22:31:31 systemctl daemon-reload
24 2022-05-23 22:32:01 systemctl enable --now mariadb.service
25 2022-05-23 22:32:13 systemctl status mariadb.service
26 2022-05-23 22:32:49 mysql_secure_installation
27 2022-05-23 22:33:30 mysql
28 2022-05-23 22:34:38 history
注:mariadb数据库的安装root密码可为空