前言
服务器搭建mysql.修改临时密码,授权和禁止远程登录访问。
环境
操作系统 Linux centOS 8.3.1
mysql 版本 MySQL 5.7.30
1、下载并安装官方的 yum repository (新建了mysql文件夹)
wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
2、安装下载过来的文件(yum repository)
yum -y install mysql57-community-release-el7-10.noarch.rpm
上面这两步应该不会有问题,有问题看看是不是命令敲错,或者网不好
3、进入正题:yum安装mysql
yum -y install mysql-community-server
可能出现如下错误
解决办法
①、输入 yum module disable mysql 命令
②、输入 yum -y install mysql-community-server命令重新安装服务(图没有截全)
4, 启动mysql
service mysqld start
5 查看是否启动成功
service mysqld status 出现如下表示启动成功,ctrl+c退出
6 、查看MySQL版本号
mysql -V 大写V
7、查看MySQL初始密码
grep “password” /var/log/mysqld.log
8 、进入数据库
mysql -uroot -p 这里到-p就行了,回车会提示你输入密码的,密码隐式的,看不到,正确输入就行或者将上面保存的初始密码复制进去,如下数据库登陆成功
9、修改密码
①、ALTER USER ‘root’@‘localhost’ IDENTIFIED BY
‘xxxxxx’ xxxxxx设置密码,有大小写字母数字,MySQL也可以设置密码不区分大小写,想了解的可以去网上找找。
②、alter user’root’@‘localhost’ identified with mysql_native_password by ‘xxxxxx’;
两种方法我都没有修改成功,两种的区别就是适用的版本不同,具体我不是很清楚,你可以两个都试试
解决办法
网上说法,不适合我的我没有解决
① 、查看密码策略并加以修改 (未解决)
参考博客
https://blog.csdn.net/hello_world_qwp/article/details/79551789.
我的直接不能查看,所以无法修改,这篇博客评论区有个策略我没有试
不知道默认的密码规则,直接拿安装mysql时生成默认密码再设置一次就行(grep ‘temporary password’ /var/log/mysqld.log) temporary password就是你刚才保存的登录密码,有兴趣的可以实施,或者使用下面的方法。
②、修改/etc/my.cnf 在最后加入skip-grant-tables,跳过数据库权限验证,保存退出。
重启MySQL服务 service mysqld restart
因为密码还没修改成功,所以还用刚才保存的密码重新登陆,如图,修改密码成功
mysql -u root -p
use mysql;
update user set authentication_string = password(“xxxxxx”) where user=“root"oot” ;
flush privileges; //刷新系统权限表
10、退出重新登录,输入修改后的密码,显示登录成功
输入命令发现,一直报错
解决方式如下:
MySQL版本5.7.6版本以前用户可以使用如下命令:
SET PASSWORD = PASSWORD(‘xxxxxx’);
MySQL版本5.7.6版本开始的用户可以使用如下命令:
ALTER USER USER() IDENTIFIED BY ‘xxxxxx’;
如果不清楚自己是什么版本,可以将两条都尝试一下,执行完命令,一切正常。
对于出现此种情况,感兴趣的同学可以参考这篇博客
https://blog.csdn.net/muziljx/article/details/81541896.
至此Linux系统下mysql搭建完成,你可以愉快的在里面玩耍了,接下来我留下了悔恨我的泪水。
下面为需要远程登录遇到的一些问题以及解决办法
11、本地访问Linux服务器mysql,以 SQLyog 为例。
填写正确的连接信息,服务器禁止远程连接。错误如图
连接上服务器MySQL,输入如下图命令打开系统权限表user.
可以发现权限表 user 中 roo t用户 host 为 localhost
解决方法
① 你可以直接修改当前表中的 user 所对应的 host 为 %
update user set host =’%’ where user=‘root’;
root用户登录,本地连接成功
②、添加权限信息
grant all on . to [email protected]’%’ identified by ‘xxxxxx’; xxxxxx为你数据库密码
记得刷新权限表,亲
flush privileges;
如下图所示命令,我先将系统用户权限表里root用户记录更新回去,这样对比起来比较明显。
至此,你就可以愉快的在本地连接服务器MySQL玩耍了,接下来我又留下了悔恨我的泪水。
12、 取消远程登录权限
在网上看了一些命令,发现都没作用,你们也可以试试或许对你们有作用,列出了如下博客提供的命令。
https://blog.csdn.net/zyddj123/article/details/80482329.
revoke 跟 grant 的语法差不多,只需要把关键字 “to” 换成 “from” 即可:
①、grant all on . to [email protected];
②、revoke all on . from [email protected];
https://blog.csdn.net/xie_sining/article/details/80484063.
取消授权远程访问操作如下:
①、use mysql;
②、revoke all privileges on . from ‘root’@’%’;
③、flush privileges;
解决方法;
① 删除屏蔽 /etc/my.conf 的 skip-grant-tables,这个是屏蔽系统权限。
② 直接修改系统用户 user 表的 host,将需要修改的用户的 host 改为 localhost 或者删除,以root用户为例
delete user where user=‘root’ and host=’%’;
如图,连接失败,以前在服务器搭建MySQL,也没遇到这么多错误,这次遇到这莫多,顺便做个记录,
方便以后安装时再出问题。
总结
至此,解决过程中的所有错误,哎,搭建一个MySQL什么时候这么复杂了,我太难了,感觉主要是
mysql版本变化比较大,大家选择的版本不尽相同,以至于有些命令不能顺利执行,还是要感谢对我起到
帮助的博客主,谢谢。