由于工作需要最近使用VMware® Workstation 15 Pro 创建了一个centos7虚拟机,可是这是一个空白的系统,需要安装一些所需软件等等;
我首先安装的就是mysql。我在网上查阅了一些资料,发现好多文章讲的都是千篇一律。有可能能按照他们的教程能安装成功,可是我按照那些教程安装失败了,期间还重新创建了一次虚拟机,结果还是不行。经过自己的摸索,最终安装成功了,特此记录一下自己的安装过程,希望对一些人有所帮助。
一、准备工作
工欲善其事必先利其器。首先把自己所需要的软件先准备好。以下是我所准备的软件和版本号。提前说明,我不提供任何破解软件,需要你们自己找,
或者在官网下载软件。
虚拟机 VMware® Workstation 15 Pro
1.jpgCentOS系统 CentOS Linux release 7.8.2003
2.jpg 3.jpgMySQL8 mysql80-community-release-el7-3.noarch.rpm
(这一步不需要下载,我只是让你确定要选择的版本文件名,下面使用wget命令时需要)
4.jpg到此所有软件准备完成。
二、安装软件
虚拟机 VM 的安装,以及CentOS系统的安装我在这就不介绍了,网上教程很多,一般都能创建成功。如果以后有时间,看看再写一篇CentOS7的虚拟机创建步骤吧。
以下是安装MySQL8的步骤:
安装前准备
-
在安装MySQL之前我们先要把CentOS自带的mariadb,如果不卸载的话,在下面的安装中会报错。
- 查看mariadb版本
rpm -qa | grep mariadb
- 卸载mariadb
rpm -e mariadb-libs-5.5.56-2.el7.x86_64 --nodeps
-
检测系统是否自带安装 MySQL:
rpm -qa | grep mysql
如果你系统有安装,那可以选择进行卸载:
rpm -e mysql // 普通删除模式 rpm -e --nodeps mysql // 强力删除模式,如果使用上面命令删除时,提示有依赖的其它文件,则用该命令可以对其进行强力删除
安装MySQL
wget http://repo.mysql.com/mysql80-community-release-el7-3.noarch.rpm
rpm -ivh mysql80-community-release-el7-3.noarch.rpm --force --nodeps
yum update
yum install mysql-server (过程很漫长)
权限设置:
chown mysql:mysql -R /var/lib/mysql
初始化 MySQL:
mysqld --initialize
启动 MySQL:(如果启动失败请往下直接查看 三、问题解决)
systemctl start mysqld
查看 MySQL 运行状态:
systemctl status mysqld
如果以上没有任何问题,到此MySQL就安装完成了,之后就是MySQL的各种配置设置了。
三、问题解决
当我启动MySQL服务时出现一下问题.
[root@localhost ~]# systemctl start mysqld
Job for mysqld.service failed because the control process exited with error code. See "systemctl status mysqld.service" and "journalctl -xe" for details.
查看MySQL服务状态显示
[root@localhost ~]# systemctl status mysqld.service
● mysqld.service - MySQL Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Mon 2020-06-01 08:34:27 CST; 26s ago
Docs: man:mysqld(8)
http://dev.mysql.com/doc/refman/en/using-systemd.html
Process: 57404 ExecStart=/usr/sbin/mysqld $MYSQLD_OPTS (code=exited, status=1/FAILURE)
Process: 57380 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
Main PID: 57404 (code=exited, status=1/FAILURE)
Status: "Server startup in progress"
Error: 2 (No such file or directory)
Jun 01 08:34:26 localhost.localdomain systemd[1]: Starting MySQL Server...
Jun 01 08:34:27 localhost.localdomain systemd[1]: mysqld.service: main process exited, code=exited, status=1/FAILURE
Jun 01 08:34:27 localhost.localdomain systemd[1]: Failed to start MySQL Server.
Jun 01 08:34:27 localhost.localdomain systemd[1]: Unit mysqld.service entered failed state.
Jun 01 08:34:27 localhost.localdomain systemd[1]: mysqld.service failed.
查看mysql.log文件显示
vim /var/log/mysqld.log
2020-06-01T00:33:44.898189Z 0 [System] [MY-013169] [Server] /usr/sbin/mysqld (mysqld 8.0.20) initializing of server in progress as process 57329
2020-06-01T00:33:45.027806Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2020-06-01T00:33:48.582275Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2020-06-01T00:33:53.256312Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: asdguasgdu621&&
2020-06-01T00:34:27.214904Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.20) starting as process 57404
2020-06-01T00:34:27.250117Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2020-06-01T00:34:27.250535Z 1 [ERROR] [MY-012271] [InnoDB] The innodb_system data file 'ibdata1' must be writable
2020-06-01T00:34:27.250624Z 1 [ERROR] [MY-012278] [InnoDB] The innodb_system data file 'ibdata1' must be writable
2020-06-01T00:34:27.250714Z 1 [ERROR] [MY-010334] [Server] Failed to initialize DD Storage Engine
2020-06-01T00:34:27.251133Z 0 [ERROR] [MY-010020] [Server] Data Dictionary initialization failed.
经过以上查看发现有两处错误:
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
2020-06-01T00:34:27.250624Z 1 [ERROR] [MY-012278] [InnoDB] The innodb_system data file 'ibdata1' must be writable
解决问题:
百度错误代码:
The innodb_system data file ‘ibdata1’ must be writable
字面意思:’ibdata1必须可写
那么解决方案自然是更改对应权限
通过yum安装的话,
5.7版本以前是
chmod -R 777 /usr/local/mysql/data/
5.7版本以后是
chmod -R 777 /var/lib/mysql
如果不是通过yum安装的话:
find / -name ibdata1
找到对应目录更改权限
之后重启MySQL服务
5.jpg
发现已经成功。
错误代码:
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
查看是否这个目标路径已经存在/var/lib/mysql /
,如果存在,删除/var/lib/mysql
/后重启 MySQL 服务就可以了!
说明
MySQL 日志文件路径
/var/log/mysqld.log
MySQL 配置文件路径
my.cnf是mysql启动时加载的配置文件,一般会放在mysql的安装目录中,用户也可以放在其他目录加载。总的来说,my.cnf类似与window中my.ini。
使用locate my.cnf命令可以列出所有的my.cnf文件
[root@localhost ~]# locate my.cnf
/etc/my.cnf
/etc/my.cnf.d
查看 MySQL 默认读取my.cnf的目录
如果没有设置使用指定目录的 my.cnf,MySQL 启动时会读取安装目录根目录及默认目录下的my.cnf文件。
查看 MySQL 启动时读取配置文件的默认目录
[root@localhost ~]# mysql --help|grep 'my.cnf'
order of preference, my.cnf, $MYSQL_TCP_PORT,
/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf
MySQL默认会搜寻my.cnf的目录,顺序排前的优先。
启动时没有使用配置文件
如果没有设置使用指定目录 my.cnf 文件及默认读取目录没有 my.cnf 文件,表示 MySQL 启动时并没有加载配置文件,而是使用默认配置。
需要修改配置,可以在mysql默认读取的目录中,创建一个my.cnf文件(例如:/etc/my.cnf),把需要修改的配置内容写入,重启 MySQL 后即可生效
所需命令
service mysqld start # 启动服务
service mysqld stop # 停止服务
service mysqld restart # 重启服务
service mysqld status # 查看状态
四、MySQL配置设置
登陆修改密码
-
通过
6.jpgcat /var/log/mysqld.log | grep password
命令查看数据库的初始随机密码。
-
通过 mysql -u root -p 敲回车键进入数据库登陆界面,密码为初始随机密码。直接复制粘贴就可以登陆进去了。
7.jpg -
通过 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root'; 命令来修改密码
8.jpg -
通过 exit; 命令退出 MySQL,然后通过新密码再次登陆
9.jpg -
通过以下命令,进行远程访问的授权
create user 'root'@'%' identified with mysql_native_password by 'root'; grant all privileges on *.* to 'root'@'%' with grant option; flush privileges;
- 通过 ALTER USER 'root'@'localhost' IDENTIFIED BY 'root' PASSWORD EXPIRE NEVER; 命令修改加密规则,MySql8.0 版本 和 5.0 的加密规则不一样,而现在的可视化工具只支持旧的加密方式。
-
通过 flush privileges; 命令刷新修该后的权限
11.jpg
开通端口设置防火墙
- 通过以下命令,关闭 firewall
systemctl stop firewalld.service;
systemctl disable firewalld.service;
systemctl mask firewalld.service;
systemctl stop firewalld
systemctl mask firewalld
12.jpg
-
通过 yum -y install iptables-services 命令安装 iptables 防火墙
13.jpg -
通过以下命令启动设置防火墙
systemctl enable iptables;
systemctl start iptables;
14.jpg
- 通过 vim /etc/sysconfig/iptables 命令编辑防火墙,添加端口,并在相关位置,写入以下内容
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 8090 -j ACCEPT
- 通过 systemctl restart iptables.service 命令重启防火墙使配置生效
- 通过 systemctl enable iptables.service 命令设置防火墙开机启动
- 使用Navicat 进行远程链接测试
五、结束语
以上就是我在新建的CentOS7虚拟机系统上安装 MySQL 的全部过程,希望能对你有所帮助。
网友评论