压缩包安装
官方教程 1(推荐):dev.mysql.com/doc/mysql-s…
官方教程 2:dev.mysql.com/doc/refman/…
通过 yum 安装 mysql 其实时最方便的方法,但是,也是通用性最差的。比如在没有网络的情况下就不能使用,因此也就有了压缩包安装的方式。
1、卸载 mariadb 数据库
mariadb 是 centos 自带的数据库,他和 mysql 会有一些冲突,会导致安装 mysql 失败。因此这一步是必须要做的
# 查看已经安装 mariadb 相关软件
[root@mycentos ~]# rpm -qa | grep mariadb
mariadb-libs-5.5.65-1.el7.x86_64
# 卸载 mariadb
[root@mycentos ~]# rpm -e --nodeps mariadb-libs
2、yum 安装依赖的库
[root@mycentos ~]# yum install libaio
3、下载压缩包
下载压缩包后通过传入 centos7 中,推荐 MobaXterm 软件
也可以使用 wget 命令直接在 centos 中下载
# 选择压缩包下载目录
cd /opt/software
# 下载
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.32-el7-x86_64.tar.gz
4、创建 mysql 用户和组
[root@mycentos ~]# groupadd mysql
[root@mycentos ~]# useradd -r -g mysql -s /bin/false mysql
由于 mysql 用户不是用于系统登录,所以使用 -r 和 -s 选项来创建一个没有登录权限的用户
5、解压压缩包
这里我的压缩包在 /opt/software 下
[root@mycentos local]# cd /usr/local/
[root@mycentos local]# tar zxf /opt/softwore/mysql-5.7.32-el7-x86_64.tar.gz -C ./
[root@mycentos local]# mv mysql-5.7.32-el7-x86_64/ mysql
解压到 /usr/local/ 目录下,并对解压的 mysql 目录重命名
6、创建mysql-files目录(可选)
这一步并不是必须的,可以设置secure_file_priv的值指向该目录(用于限制数据导入导出操作的目录)
[root@mycentos local]# cd mysql
[root@mycentos mysql]# mkdir mysql-files
[root@mycentos mysql]# chown mysql:mysql mysql-files
[root@mycentos mysql]# chmod 750 mysql-files
7、创建 mysql 启动时配置文件
mysql 启动配置文件中存放的是 mysql 启动时的各种参数,如字符编码,端口等待
在启动 mysql 服务时如果不指定配置文件,mysql 会使用默认的启动参数来启动。
在实际使用中,我们会对 mysql 启动参数进行修改,所以我们都要创建这个配置文件
[root@mycentos mysql]# cd /etc
[root@mycentos etc]# touch my.cnf
[root@mycentos etc]# chown root:root my.cnf
[root@mycentos etc]# chmod 644 my.cnf
[root@mycentos etc]# vim my.cnf
文件内容:
[mysqld]
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
port=3306
log-error=/usr/local/mysql/data/localhost.localdomain.err
user=mysql
secure_file_priv=/usr/local/mysql/mysql-files
local_infile=OFF
8、初始化 mysql 数据目录
执行初始化后,mysql 会根据 my.cnf 中的参数在 mysql 根路径下创建一个 data 目录,这个目录存放 mysql 数据库中的数据
[root@mycentos etc]# cd /usr/local/mysql
[root@mycentos mysql]# bin/mysqld --defaults-file=/etc/my.cnf --initialize
如果这一步出错,则代表没有安装 libaio 这个库,回到第2步进行安装
初始化成功后,mysql 会在 err 日志中生成临时密码,登录是要用,err 日志的文件在 my.cnf 中指定
[root@mycentos mysql]# tail data/localhost.localdomain.err
...
A temporary password is generated for root@localhost: (foK3u?wguOt
9、启动 ssl 安全连接(可选)
[root@mycentos mysql]# bin/mysql_ssl_rsa_setup
10、启动 mysql 服务端
[root@mycentos mysql]# bin/mysqld_safe --user=mysql &
这启动的 & 是后台启动的意思,它不会独占一个终端
11、登陆 mysql 客户端
[root@mycentos mysql]# bin/mysql -u root -p
Enter password:
输入临时密码连接 mysql 客户端
12、修改密码
这一步必须做,否则 mysql 不允许你对数据库进行任何操作
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '111111';
13、退出客户端,关闭mysql服务
mysql> quit # 退出 mysql client
Bye
[root@mycentos mysql]# bin/mysqladmin -u root -p shutdown
Enter password:
14、设置 mysql 开机自启
关于 systemd 的介绍:www.ruanyifeng.com/blog/2016/0…
通过 yum 安装的 mysql 默认通过 systemd 来管理开关机,而我们的压缩包安装也可以配置 systemd 来管理启动
1、新建 systemd service unit 配置文件
[root@mycentos mysql]# cd /usr/lib/systemd/system
[root@mycentos system]# touch mysqld.service
[root@mycentos system]# chmod 644 mysqld.service
2、在配置文件中添加配置信息
[Unit]
Description=MySQL Server
Documentation=man:mysqld(7)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
Type=forking
PIDFile=/usr/local/mysql/data/mysqld.pid
# Disable service start and stop timeout logic of systemd for mysqld service.
TimeoutSec=0
# Start main service
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --daemonize --pid-file=/usr/local/mysql/data/mysqld.pid $MYSQLD_OPTS
# Use this to switch malloc implementation
EnvironmentFile=-/etc/sysconfig/mysql
# Sets open_files_limit
LimitNOFILE = 5000
Restart=on-failure
RestartPreventExitStatus=1
PrivateTmp=false
这里注意,在 ExecStart 后的字符串其实是一行,复制到 centos 后要确保没有换行符
在复制到配置文件之前,一定要确保文件中有关目录是正确的
3、为 systemd 的 tempfiles 特性添加配置文件
[root@mycentos system]# cd /usr/lib/tmpfiles.d
[root@mycentos tmpfiles.d]# touch mysql.conf
[root@mycentos tmpfiles.d]# chmod 644 mysql.conf
文件内容
d /usr/local/mysql/data 0750 mysql mysql -
4、设置 mysql 服务开机自启
[root@mycentos tmpfiles.d]# systemctl enable mysqld.service
Created symlink from /etc/systemd/system/multi-user.target.wants/mysqld.service to /usr/lib/systemd/system/mysqld.service.
5、手动启动 mysql 服务
测试 systemd 配置是否生效,使用 systemd 命令启动 mysql,之前第13步已经关闭 msyql 服务了
[root@mycentos tmpfiles.d]# systemctl start mysqld
检查 mysql 服务状态
[root@mycentos tmpfiles.d]# systemctl status mysqld
● mysqld.service - MySQL Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: active (running) since 六 2020-10-24 20:44:39 CST; 1min 15s ago
......
10月 24 20:44:39 mycentos systemd[1]: Starting MySQL Server...
10月 24 20:44:39 mycentos systemd[1]: Started MySQL Server.
6、重启 centos,测试 mysql 能否自启
[root@mycentos ~]# systemctl status mysql
15、设置 bin 目录为系统变量
官方文档-设置环境变量:dev.mysql.com/doc/refman/…
如果想要在 centos 任意路径使用 mysql -uroot -p 命令,就需要把 msyql 的 bin 目录设置到环境变量中。
可以使用 export 命令来设置路径到环境变量,但是你退出登录后,下一次登录这个环境变量就会失效。
如果想永久生效,就要修改环境变量了,这个配置文件一般是 .bashrc
[root@mycentos ~]# find / | grep .bashrc
/etc/bashrc
/etc/skel/.bashrc
/root/.bashrc
/home/myboy/.bashrc
可以看到每个用户下都有 .bashrc 文件,对应每个用户登录时的启动文件,这里我们把 bin 放到 root 用户的启动文件中。
PATH=${PATH}:/usr/local/mysql/bin
执行 source 命令来是环境变量生效,或者也可以重新登录
[root@mycentos ~]# source /root/.bashrc
[root@mycentos ~]# mysql -uroot -p # 启动测试
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.