前言
最近因公司人员有限,需要搭建微服务的环境,因此这几天恶补了一下Linux的相关操作,打算从MySQL安装开始,毕竟项目的前提都是数据先行嘛。看了大量文章,实际动手后,发现还是存在着一些问题,很多人可能都是对着教程十分钟左右就完事了。我天资愚昧,淌了许多MySQL安装时的坑,问题五花八门的,大家遇到了问题一定要根据MySQL的版本去解决。
环境准备
Linux版本:centos7.5
MySQL安装版本:5.7
root权限获取:sudo su(必备条件)
确保系统中MySQL环境是干净的,若是二次安装则需要将之前安装失败的MySQL残留文件彻底卸载干净
以上内容准备好后,就可以开始安装了
MySQL安装
第一步:检查当前系统是否存在MySQL
rpm -qa | grep mysql
如果存在卸载即可
rpm -e mysql-5.7.31-linux-glibc2.12-x86_64
检查当前系统是否存在Mariadb,如果存在则需要卸载
rpm -qa|grep mariadb
rpm -e --nodeps mariadbxxxx
第二步:下载MySQL的安装包,按实际需求下载就好,我需要的版本是5.7版本
下载链接:https://dev.mysql.com/downloads/mysql/5.7.html#downloads
下载完成后,放至服务器指定文件夹即可。
第三步:解压并移动
移动是为了方便后续配置文件需要,非必需。
解压MySQL:
tar -xvf mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz
移动:
mv mysql-5.7.31-linux-glibc2.12-x86_64 /usr/local/
重命名:
mv mysql-5.7.31-linux-glibc2.12-x86_64/ mysql-5.7
软连接:
ln -s mysql-5.7.31-linux-glibc2.12-x86_64/ mysql-5.7
添加系统mysql组和mysql用户
检查mysql组和用户是否存在,如无创建
以上是存在的情况,就不要二次添加了,
如果没有则需要创建mysql组和用户
groupadd mysql
useradd -r -g mysql mysql
安装数据库
创建data目录
cd /
mkdir -p data
cd data/
mkdir -p mysql
授权
chown mysql:mysql -R /data/mysql
第四步:开始配置MySQL相关参数
cd /etc
vi my.cnf
因为我的是笔记本,编辑模式是fn+ins,也可按i进入编辑模式,写入如下内容
[mysqld]
bind-address=0.0.0.0
port=3306
user=mysql
basedir=/usr/local/mysql-5.7
datadir=/data/mysql
socket=/tmp/mysql.sock
log-error=/data/mysql/mysql.err
pid-file=/data/mysql/mysql.pid
#character config
character_set_server=utf8mb4
symbolic-links=0
#!includedir /etc/my.cnf.d
完事后按ESC退出编辑,英文输入法输入 :wq 退出编辑
第五步:初始化
cd /usr/local/mysql-5.7/bin/
./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql-5.7/ --datadir=/data/mysql/ --user=mysql --initialize
查看初始化密码
vim /data/mysql/mysql.err
找到root@localhost:初始密码
第六步:启动
service mysqld start
(不报错可自行跳过)
正常情况下是会启动成功的,我就是在这里开始错的
出现了如下错误
Redirecting to /bin/systemctl start mysqld.service
Failed to start mysqld.service: Unit not found.
解决方案:
cd /usr/local/mysql-5.7/support-files
./mysql.server start
结果还是报错。。。。
Starting MySQL.2020-08-14T02:34:16.212389Z mysqld_safe error: log-error set to '/var/log/mariadb/mariadb.log', however file don't exists. Create writable for user 'mysql'.ERROR! The server quit without updating PID file (/data/mysql/mysql.pid).
解决方案:
mkdir /var/log/mariadb
touch /var/log/mariadb/mariadb.log
chown -R mysql:mysql /var/log/mariadb/
再次输入./mysql.server start启动成功
如果还是启动失败,报
MySQL server PID file could not be found! [FAILED] .....
可能进程里已经存在mysql进程
解决方法:用命令“ps -ef|grep mysqld”查看是否有mysqld进程,如果有使用“kill -9 进程号”杀死,然后重新启动mysqld!
查看是否成功启动命令:
ps -ef|grep mysql
更改MySQL密码
cd /usr/local/mysql-5.7/bin
mysql -u root -p
复制刚才得到的初始密码进入
SET PASSWORD = PASSWORD('123456'); --修改密码
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER; --设置数据库账号
flush privileges; --刷新修改
至此,MySQL安装过程结束了。
如果需要开放远程连接,使linux上的mysql能被远程访问,则使用sql语句修改root用户的host
use mysql;
select host,user from user;
update user set host='%' where user='root';
flush privileges;
如果想关闭mysql 执行 service mysqld stop
PS:注意权限问题,以及开始自启
chown 777 /etc/my.cnf
开放linux防火墙的3306端口:
//开启端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
//查询端口号3306是否开启:
firewall-cmd --query-port=3306/tcp
//重启防火墙:
firewall-cmd --reload
//查询有哪些端口是开启的:
firewall-cmd --list-port
//禁用端口
firewall-cmd --zone=public --remove-port=3306/tcp --permanent
如果安装过程有问题的地方,欢迎大家指出,有疑问的地方也可以在下方留言。