CentOS 7下载安装MySQL 8.0以及连接虚拟机CentOS 7数据库教程

五迷三道 提交于 2020-11-12 10:56:39

本教程会运用到Xshell 6和Xftp 6,其实一般主要用Xshell 6即可,但是由于写这个教程的时候,我的Xshell 6还未激活,上传不了文件,且Xftp 6相对于字符界面的Xshell 6更贴近已经习惯了Windows系统的我们,所以使用Xftp 6,当然牛逼一点的,直接使用虚拟机也是可以的,可以不借助这些辅助工具。

1. 从官网https://dev.mysql.com/downloads/mysql/上下载MySQL 8.0.22安装包

Select Operating System:选择Red Hat(红帽),因为CentOS 是基于Red Hat(红帽)的

Select OS Version:选择Linux 7,因为我们的CentOS 7对应的就是Linux 7

当然你也可以在Select Operating System中选择Linux - Generic(Linux通用),Select OS Version选择All

然后选择"RPM Bundle",点击 Download

2. 点击"No thanks, just start my download."进行下载,这是不用账号登录的下载方式,你也可以选择先登录再下载

3. 下载好后,双击打开VMware Workstation Pro,选中要使用的虚拟机CentOS 7,点击"开启此虚拟机",输入root用户和对应的密码

4. 打开Xshell 6和Xftp 6,输入虚拟机的连接信息进行连接,具体的连接过程请看我以前写的“Xshell 6或者Xftp 6连接CentOS 7虚拟机”(传送门:https://my.oschina.net/u/3986411/blog/4711296

5. 通过如下命令查看mariadb的安装包

rpm -qa | grep mariadb

6. 通过如下命令卸载mariadb

sudo rpm -e mariadb-libs-5.5.65-1.el7.x86_64

注意,有可能mariadb要某些依赖才能卸载,要么安装完依赖再卸载,或者通过如下命令强制卸载:

rpm -e mariadb-libs-5.5.65-1.el7.x86_64 --nodeps

为了避免一些不必要的情况,一般我们选用第二条命令来卸载mariadb,且mariadb的全名要写对,写成和第5步查看mariadb的安装包时出现的名字一样;

问题:为什么卸载mariadb?

答案:CentOS 7已经不支持MySQL(由于收费的原因),所以系统就预置了mariadb,而安装mysql的话会和mariadb的文件冲突,所以需要先卸载掉mariadb,才能安装MySQL。

7. 通过如下命令再次查看mariadb的安装包

rpm -qa | grep mariadb

出现如上图所示情况,代表mariadb已经卸载成功了,可以开始进行下一步

8. 通过如下命令进入根目录下的usr目录下的local目录,该目录是专门用来存放一些本地的共享资源的

cd /usr/local/

9. 通过如下命令来查看当前目录下的目录结构,注意这是两个小写的L,不要写错了

ll

10. 通过如下命令在当前目录下创建一个名为mysql的目录

mkdir mysql

再通过如下命令查看当前目录下的目录结构,在查出的结果中,我们可以看到我们刚刚创建的mysql目录

11. 通过如下命令进入mysql目录

cd mysql

12. 然后我们把之前下载的mysql安装包上传到mysql目录,这里我们有两种方法:

方法一:通过Xshell 6上传

点击菜单栏的"窗口"-->"传输新建文件(F)",通过ftp协议来把刚下载好的mysql安装包传输到CentOS 7系统中

方法二:通过Xftp 6上传

把mysql安装包直接拖拽到Xftp 6的右侧(可在Xftp 6左侧找,也可以直接打开Windows存放安装包的文件夹),文件就可以传输到CentOS 7系统中

我们直接在右侧目录那里输入/usr/local/mysql,直接跳转到我们要上传的目录下

由于我Xshell 6还未激活所以上传不了,所以我用的是第二种方法上传

13. 我们通过在Xshell 6输入如下命令来查看mysql目录

ll

14. 通过如下命令解压mysql的安装包

tar -xvf mysql-8.0.22-1.el7.x86_64.rpm-bundle.tar

15. 通过如下命令查看mysql的安装包

rpm -qa | grep mysql

接下来我们对这些安装包进行一个一个安装

16. 通过如下命令来安装libs

rpm -ivh mysql-community-libs-8.0.22-1.el7.x86_64.rpm --nodeps --force

17. 通过如下命令来安装client

rpm -ivh mysql-community-client-8.0.22-1.el7.x86_64.rpm --nodeps --force

18. 通过如下命令来安装server

rpm -ivh mysql-community-server-8.0.22-1.el7.x86_64.rpm --nodeps --force

19. 通过如下命令来安装common

rpm -ivh mysql-community-common-8.0.22-1.el7.x86_64.rpm --nodeps --force

20. 通过以下命令,对mysql数据库进行初始化和相关配置

mysqld --initialize;
chown mysql:mysql /var/lib/mysql -R;
systemctl start mysqld.service;
systemctl enable mysqld;

21. 通过如下命令来查看数据库的密码

cat /var/log/mysqld.log | grep password

如上图所示,红色方框里面的就是我们的数据库密码,我们复制一下,后面登录时要用

22. 通过如下命令来进入数据库的登录界面

mysql -uroot -p

输入上一步我们复制的数据库密码进行数据库登录

注意:这里粘贴密码后密码没有显示,不是出错,且要用点击鼠标右键粘贴来粘贴密码,Ctrl+C是不会粘贴密码的哦

23. 通过如下命令来修改密码,这里我们设置为123,你也可以修改为自己需要的密码,这里我们为了简单易记忆,就设置为123

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123';

如图所示代表着修改密码成功

24. 通过输入如下命令命令退出MySQL,然后通过新密码重新登录,验证一下密码修改是否真的成功了!

exit;

25. 通过以下命令,进行远程访问的授权

create user 'root'@'%' identified with mysql_native_password by 'root';
grant all privileges on *.* to 'root'@'%' with grant option;
flush privileges;

26. 通过如下命令来修改加密规则,之所以要修改加密规则是因为MySql 8.0版本和MySQL 5.0版本的加密规则不一样,而现在的可视化工具只支持旧的加密方式。

ALTER USER 'root'@'localhost' IDENTIFIED BY 'root' PASSWORD EXPIRE NEVER;
flush privileges;

27. 通过如下命令来退出MySQL

exit;

28. 通过如下命令来关闭firewall(防火墙)

systemctl stop firewalld.service;
systemctl disable firewalld.service;
systemctl mask firewalld.service;

29. 通过如下命令来安装iptables防火墙

yum -y install iptables-services

30. 通过如下命令来重新启动设置防火墙

systemctl enable iptables;
systemctl start iptables;

31. 通过如下命令来编辑防火墙,添加端口

vim /etc/sysconfig/iptables

32. 按下"i"键进入插入模式。

如果要通过同时按W+C两个键进入插入模式,要先把游标移到最下面的COMMIT的右边,因为按下这两个键会去掉所在位置的字符

33. 在相关位置写入如下内容:

-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

34. 点击"ESC"键退出插入模式

35. 输入如下命令再按回车,保存并退出

:wq!

36. 通过如下命令来重启防火墙使配置生效

systemctl restart iptables.service

37. 通过如下命令来设置防火墙开机启动

systemctl enable iptables.service

38. 通过如下命令来查看虚拟机的IP地址(如果找不到请查找我之前写的博客“Xshell 6或者Xftp 6连接CentOS 7虚拟机”,传送门:https://my.oschina.net/u/3986411/blog/4711296

ifconfig

或者

ip addr

红色方框里面的就是我们虚拟机的IP地址

39. 双击打开sqlyog,点击sqlyog菜单栏的文件-->新连接,在连接界面输入虚拟机连接的相关信息,然后点击"连接"按钮进行连接

40. 如果sqlyog连接虚拟机数据库时出现如下图所示错误

解决思路:

1. 在Xshell 6输入如下mysql登录命令语句,看是否由于虚拟机(暴力)重启密码没有修改成功,如果无论是输入新密码还是输入旧密码(用下面的查看密码命令得到)都报1045错误,那就进行下面的步骤,否则跳过

// mysql登录命令
sudo -u root -p
// 查看密码命令
cat /var/log/mysqld.log | grep password

(1)进行如下操作,使得mysql可以无密码登录

1)进入mysql设置文件

vim /etc/my.cnf;

注意:CentOS 7修改的是my.cnf,而windows下修改的是my.ini

2)按"i"键,进入编辑模式,在[mysqld]下方输入如下代码

skip-grant-tables

然后按"ESC"键退出编辑模式,输入如下命令保存并退出

3)由于我用网上说的输入如下命令重启mysql不成功,所以我直接重启虚拟机

/etc/init.d/mysql restart(有些用户可能需要使用/etc/init.d/mysqld restart)

4)输入如下命令登录mysql,密码直接回车就可以

mysql -u root -p

(2)输入如下命令来修改mysql密码

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123';

如果报如上图所示错误,那就执行如下命令来修改mysql密码

flush privileges;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123';

(3)编辑my.cnf,去掉刚才添加使mysql无密码登录的内容,然后重启MySQL,就可以了

2. 如果处理完上面的操作后sqlyog还是登录不上虚拟机mysql,输入如下命令看看是否授权远程登录

select user,password,host from user;

如果出现如上如所示错误,请执行如下命令(原因是:select user,password,host from user;这个命令必须是针对某个具体的数据库而言的

show databases;
use mysql;
select user,host from user;

如果想root用户使用密码123从任何主机连接到mysql服务器的话,输入如下命令:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123' WITH GRANT OPTION;

如果想用户root从ip为192.168.1.106的主机连接到mysql服务器,并使用123作为密码,输入如下命令:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.106' IDENTIFIED BY '123' WITH GRANT OPTION;

如果输入命令后出现如上图所示的错误,这是因为MySQL 8.0版本以后的授权方式与以前版本的不一样,不能授权给自己导致的,那么就执行如下操作:

(1)创建一个其他用户

create user 'guo'@'%' identified by '123';

输入如下命令,查看用户是否创建成功

select user,host from user;


(2)授权

GRANT ALL PRIVILEGES ON *.* TO 'guo'@'%';
flush privileges;
ALTER USER 'guo'@'%' IDENTIFIED WITH mysql_native_password BY '123';
flush privileges;

(3)再用sqlyog连接虚拟机,记得改变账号和密码

正确输入红色方框中的相应信息,点击连接

出现如上图所示就代表连接虚拟机成功啦!

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!