本文介绍两种安装方式:官网RPM包安装mysql 和 源码编译安装mysql
(其中源码编译安装需要耗用大量的安装时间)
目录
环境清单:
- 操作系统:CentOS 7.6 x86
- 软件版本:MySQL 8.0.17及以上
配置安装环境
关闭防火墙并取消开机自启动
1. 停止防火墙。
systemctl stop firewalld.service
2. 关闭防火墙。(执行disable命令关闭防火墙的同时,也取消了开机自启动。)
systemctl disable firewalld.service
3. 查看防火墙。(查看是否关闭成功)
systemctl status firewalld.service
关闭SELinux
1. 设置SELinux成为permissive模式,临时关闭selinux。(临时打开则把0换成1)
setenforce 0
2. 查看selinux状态,确认为permissive模式。
getenforce
3. 永久关闭selinux
执行vim /etc/sysconfig/selinux命令,打开SELinux文件,把"SELINUX=enforcing" 改为 "SELINUX=disabled"。
vim /etc/sysconfig/selinux
按键盘上的esc键,输入:wq保存退出,并重启服务器reboot
确认SELinux是否关闭,如果SELinux status参数显示为disabled即为关闭状态。
/usr/sbin/sestatus -v
创建用户组和用户
服务器环境下,为了系统安全,通常会为进程分配单独的用户,以实现权限隔离。创建的组和用户是操作系统层面的,不是数据库层面的,第一步中操作的就是操作系统用户。
1. 创建mysql用户组。
groupadd mysql
2. 创建mysql用户。
useradd -g mysql mysql
3. 设置mysql用户密码,重复输入密码(根据实际需求设置密码)。
passwd mysql
创建数据目录
1. 创建数据目录/data和进程所需的相关目录。
mkdir -p /data/mysql
cd /data/mysql
mkdir data tmp run log
2. 修改数据目录/data的用户组和用户权限为mysql:mysql。
chown -R mysql:mysql /data
ll /
官网RPM安装mysql
下载RPM包
1. 下载MySQL的RPM安装包。
下载地址:https://downloads.mysql.com/archives/community/
选择自己所需要的版本号,进行下载
2. 在服务器“/home”分区下新建“mysql-rpm”文件夹,并将下载的安装包上传至该目录。
mkdir -p /home/mysql-rpm && cd /home/mysql
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.17-1.el7.x86_64.rpm-bundle.tar
3. 解压
tar xvf mysql-8.0.17-1.el7.x86_64.rpm-bundle.tar
安装RPM包
1. 卸载系统自带mariadb-libs,否则会导致无法安装mysql-community-libs。
yum -y remove mariadb-libs
2. 安装依赖包。
yum -y install net-tools
3. 进入mysql-rpm的目录,并且安装MySQL。
rpm -ivh mysql-community-common-8.0.17-1.el7.aarch64.rpm
rpm -ivh mysql-community-libs-8.0.17-1.el7.aarch64.rpm
rpm -ivh mysql-community-client-8.0.17-1.el7.aarch64.rpm
rpm -ivh mysql-community-server-8.0.17-1.el7.aarch64.rpm
至此,rpm方式安装完毕。
编译安装Mysql
环境要求:
1. 依赖安装
yum install -y bison ncurses ncurses-devel libaio-devel openssl openssl-devel gmp gmp-devel mpfr mpfr-devel libmpc libmpc-devel
2. 升级CMake版本
需要将CMake版本升级到3.5.2版本,链接:升级cmake
3. 升级GCC版本
需要将gcc版本升级到7.3.0版本,链接:升级GCC
4. 下载mysql软件包,解压,并进入软件目录
MySQL源码包(includes Boost Headers)下载地址:https://downloads.mysql.com/archives/community/
cd data/ && wget https://downloads.mysql.com/archives/get/p/23/file/mysql-boost-8.0.17.tar.gz
tar -zxvf mysql-boost-8.0.17.tar.gz
cd mysql-8.0.17/
5. 创建构建目录,并进入目录,进行mysql配置
mkdir build && cd build
cmake .. -DBUILD_CONFIG=mysql_release -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql/data -DWITH_BOOST=/data/mysql-8.0.17/boost/boost_1_69_0
路径要根据实际情况而定,关键参数说明:
- DBUILD_CONFIG:设置为mysql_release的含义是指CMake编译参数采用Mysql官方发布release版本时的编译参数。
- DCMAKE_INSTALL_PREFIX:用于指定软件的安装路径,本文安装路径为:/usr/local/mysql。文档中的安装路径只是参考,根据客户实际情况进行配置。
- DMYSQL_DATADIR:创建数据库时,数据文件存放的路径。本次安装路径为:/data/mysql/data
- DWITH_BOOST:解压MySQL源码包后,解压文件中boost_1_69_0文件夹所在路径。例如,本文解压在“/data”目录下,则路径为:/data/mysql-8.0.17/boost/boost_1_69_0。
6. 编译安装
make -j 8 && make -j 8 install
说明:-j 8 参数充分利用多核CPU优势,加快编译速度,参数-j后数字为CPU核数,可用“cat /proc/cpuinfo | grep processor | wc -l”进行查看,此数值应小于等于CPU核数。
又是一个漫长的等待安装过程~
不幸的事情发生了,好像是内存不够给终止了
解决方案:
# 增加 64x16=1024M空间
dd if=/dev/zero of=/swapfile bs=64M count=16
# swap格式
mkswap /swapfile
# 使用swap空间
swapon /swapfile
又得重新编译安装,make -j 8 和 make install (如果还是出现这个问题,就再增加空间,或者一开始就count=32,增加2048M)
7. 验证
7.1 查看安装目录
ls /usr/local/mysql/
7.2 验证版本
/usr/local/mysql/bin/mysql --version
运行mysql数据库
本文有两种安装方式,安装完毕后软件的目录都不一致,在后面的操作需要注意路径的问题
- 官网RPM安装方式安装:软件安装目录默认为“/usr”
- 编译安装方式安装:软件安装目录默认为“/usr/local/mysql”
1. 修改配置文件。
1.1 编辑my.cnf文件。
rm -f /etc/my.cnf
echo -e "[mysqld_safe]\nlog-error=/data/mysql/log/mysql.log\npid-file=/data/mysql/run/mysqld.pid\n[mysqldump]\nquick\n[mysql]\nno-auto-rehash\n[client]\ndefault-character-set=utf8\n[mysqld]\nbasedir=/usr/local/mysql\nsocket=/data/mysql/run/mysql.sock\ntmpdir=/data/mysql/tmp\ndatadir=/data/mysql/data\ndefault_authentication_plugin=mysql_native_password\nport=3306\nuser=mysql\n" > /etc/my.cnf
说明:其中文件路径(包括软件安装路径basedir、数据路径datadir等)根据实际情况修改。user=mysql是指操作系统层的用户,即创建用户和用户中创建的用户。
1.2 确保my.cnf配置文件修改正确。
cat /etc/my.cnf
1.3 修改配置文件/etc/my.cnf的用户组和用户权限为mysql:mysql。
chown mysql:mysql /etc/my.cnf
ll /etc/my.cnf
2. MySQL加入service服务。
chmod 777 /usr/local/mysql/support-files/mysql.server
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
chkconfig mysql on
修改/etc/init.d/mysql的用户组和用户权限为mysql:mysql
chown -R mysql:mysql /etc/init.d/mysql
ll /etc/init.d/mysql
3. 配置环境变量。
3.1 修改环境变量文件/etc/profile的用户组和用户权限为mysql:mysql。
chown mysql:mysql /etc/profile
ll /etc/profile
3.2 切换到mysql用户。
su - mysql
whoami
3.3 安装完成后,将MySQL二进制文件路径到PATH。
echo export PATH=$PATH:/usr/local/mysql/bin >> /etc/profile
使环境生效
source /etc/profile
注:其中PATH中的“/usr/local/mysql/bin”路径,为MySQL软件安装目录下的bin文件的绝对路径,请根据实际情况修改。
4. 初始化数据库
mysqld --defaults-file=/etc/my.cnf --initialize
# 或者
/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --initialize
说明:
- 以上步骤回显倒数第2行中有初始密码,请注意保存,6时会用到。
- 如果采用官网RPM安装方式安装,则mysqld文件在/usr/sbin目录下。请根据实际情况修改初始化数据库命令。
- 如果初始化失败,提示“--initialize specified but the data directory has files in it.”则执行rm -rf /data/mysql/data/命令删除数据后重新初始化。
初始化完成后,查看数据目录下数据文件/data/mysql/data的用户组和用户权限为mysql:mysql(因为前面/etc/my.cnf文件中配置的操作系统用户是user=mysql)。
启动数据库。
1 切换到mysql用户
su - mysql
2 启动mysql服务
service mysql start
注:如果以root用户(su - root)第一次启动数据库服务(service mysql start),则启动时会提示缺少mysql.log文件而导致失败。切换到mysql用户(su - mysql)启动数据库服务后,会在/data/mysql/log目录下生成mysql.log文件,停止数据库服务(service mysql stop),再次以root用户启动数据库服务则不会报错。
3 如果采用官网RPM方式安装,则启动数据库的命令如下。
/usr/sbin/mysqld --defaults-file=/etc/my.cnf &
4 查看数据库进程。
ps -ef | grep mysql
5 查看数据库监测端口。
netstat -anpt
netstat -anpt | grep mysql
netstat -anpt | grep 3306
登录数据库
- 提示输入密码时,请输入第四步产生的初始密码。
- 如果采用官网RPM安装方式,则mysql文件在/usr/bin目录下。登录数据库的命令根据实际情况修改。
mysql -uroot -p -S /data/mysql/run/mysql.sock
配置数据库帐号密码。
1 登录数据库以后,修改通过root用户登录数据库的密码。
alter user 'root'@'localhost' identified by "123456";
2 创建全域root用户(允许root从其他服务器访问)。
create user 'root'@'%' identified by '123456';
3 进行授权。
grant all privileges on *.* to 'root'@'%';
flush privileges;
卸载mysql
关闭数据库进程。
ps -ef | grep mysql
/usr/bin/mysqladmin -uroot -p123456 shutdown -S /data/mysql/run/mysql.sock
# 或者
kill -9 进程ID
官网RPM卸载
1. 卸载数据库RPM包。
rpm -qa | grep mysql
rpm -qa | grep mysql-community | xargs rpm -e
2. 删除对应的安装目录和数据目录。
ls /usr/mysql
rm -rf /usr/mysql
ls /data/mysql
rm -rf /data/mysql
编译安装卸载
1. 源码编译安装只是生成对应的文件,不涉及卸载,直接删除对应的安装目录和数据目录即可。
ls /usr/local/mysql
rm -rf /usr/local/mysql
ls /data/mysql
rm -rf /data/mysql
备份数据库
基本命令
1. 备份数据库。
mysqldump -h <主机> -P <端口> -u <用户名> -p<密码> --database <数据库> > /路径/文件名.sql
2. 恢复数据库。
mysql -h <主机> -P <端口> -u <用户名> -p<密码> --<数据库> < /opt/mytest_bak.sql
举例
1. 全库备份。
mysqldump -h 192.168.41.41 -P 3306 -uroot -p123456 --all-databases > alldb.sql
2. 备份数据库db1至db1.sql。
mysqldump -h 192.168.41.41 -P 3306 -uroot -p123456 --databases db1 > db1.sql
3. 备份数据库db1中的表tb1至db1tb1.sql。
mysqldump -h 192.168.41.41 -P 3306 -uroot -p123456 db1 tb1 > db1tb1.sql
4. 恢复数据库db1。
mysql -h 192.168.41.41 -P 3306 -uroot -p123456 db1 < db1.sql