Linux-CenOS7 MySQL 安装
MySQL 安装
mysql 安装文件
链接:https://pan.baidu.com/s/1BsuEGHHcp7pNiGj2NDtZdQ
提取码:6nie
1.上传mysql 安装包
# 1.安装rz指令 【通过Xftp上传也可以】
yum install -y lrzsz
# 2.创建mysql目录
mkdir /mysqltar
# 3.上传mysql所有压缩包
2.卸载centos7.x 自带mariadb服务
# 1.查看系统中的mariadb依赖
rpm -qa|grep mariadb
# 2.卸载
rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64
# 3.再次查看是否卸载成功
3.安装mysql服务
# 1.vim 修改文件时 关键字高亮
yum install -y vim
# 2.进入存放mysql压缩包的目录
cd /mysqltar
# 3.安装依赖包
rpm -ivh perl-*
# 4.工具包
rpm -ivh net-tools-2.0-0.22.20131004git.el7.x86_64.rpm
rpm -ivh mysql-community-common-5.6.42-2.el7.x86_64.rpm
# 5.库
rpm -ivh mysql-community-libs-5.6.42-2.el7.x86_64.rpm
# 6.客户端
rpm -ivh mysql-community-client-5.6.42-2.el7.x86_64.rpm
# 7.核心服务
rpm -ivh mysql-community-server-5.6.42-2.el7.x86_64.rpm
4.启动mysql服务
# 1.开启mysql服务
systemctl start mysql
# 2.查看是否开启成功
systemctl status mysql
# 3.根据系统提示修改密码
mysqladmin -u root -p password
# 4.进入mysql服务
mysql -uroot -p1234
5.开启mysql远程访问 【二选一】
# 1.可以使用一下命令添加权限,这个添加的是空密码的root用户
grant all privileges on *.* to 'root'@'%';
# 2.这个命令添加的是指定密码的root用户
grant all privileges on *.* to 'root'@'%' identified by '密码' with grant option
# 也可以手动到mysql.user表中设置一个 host为% 的用户权限
此处的目的是为了让 mysql 的user 表中,设置一个 root 用户的 host访问权限
% 代表任意ip都可以访问,不加以安全性的设置,学习使用可以使用。如果是生产环境下,由运维人员指定固定ip即可
6.刷新访问权限
flush privileges;
7.通过客户端工具远程访问linux 下的 mysql,发现连接失败
8.分析原因:
mysql的设置已经完成,等待响应信息很久
,仍然无法通过通过远程连接。可能是计算机的防火墙出于安全考虑,禁止远程连接,客户端连接超时报错。
学习使用,可直接关闭自己计算机
的防火墙 以及 虚拟机
的防火墙:
# 1.关闭虚拟机防火墙
systemctl stop firewalld
# 2.永久关闭 防止下次开启重启
systemctl disable firewalld
系统防火墙自行关闭即可
9.再次连接,发现这次仍然报错,但是响应速度很快
,错误提示也与之前不一样。证明这是另一个错误
10.清空密码,直接连接,立刻显示连接成功
错误分析:
-
我们通过远程连接使用的用户是 root用户 ,密码是 1234,也就是上图所示的①号用户,但这个用户的 host 访问权限设置是 localhost ,也就是只有本机用户可以连接。
-
而我们添加的②号用户,host 是 % ,访问权限足够,可以被远程连接。所以我们的远程客户端是通过这个用户来连接虚拟机上的mysql的,但这时候的root用户是没有密码的。
-
结论:mysql中的root用户过多,影响了我们的判断,导致密码错误!
解决:
-
先删除用户名为空的用户,避免操作用户混淆
delete from user where user = '';
-
使用mysql加密函数,修改指定访问权限为% 的root用户的密码
update user set password = password(123456) where host = '%';
-
刷新权限
flush privileges;
-
再次连接即可
update user set password = password(123456) where host = '%';
-
刷新权限
flush privileges;
-
再次连接即可