mysql8版本权限问题_SQL(一):关于MySQL8.0版本:用户、密码和权限的问题!

由于前段时间重装了系统,最近放假,正好有时间重新搭建一下开发环境,当然很多工具都装了最新版,MySQL也不例外。

以前的MySQL装的是5.6或5.7的,用起来倒是没什么需要特殊说明的地方。

现在换了8.0,虽然功能强大了一些,但有些地方还是需要注意。

安装的话,可以参考一下这篇博客:MySQL8的安装

以下是记录的一些问题和解决方法

一、服务启动失败

1.1. 输入:net start mysql,提示服务名无效

可到 C:\Program Files\MySQL\MySQL Server 8.0\bin 目录下;

打开DOS窗口,输入:mysqld --install ;

再次输入:net start mysql。

1.2. 输入:net start mysql 后,提示:MSQL服务无法启动。服务没有报告任何错误

输入: mysqld --console,看看错误信息,通过错误信息,去查找解决方法;

如果错误信息是Table 'mysql.plugin' doesn't exist, 如果没有解决办法,可以试着重新安装服务或初始化MySQL。

建议先看看my.ini文件中的配置:

8b659f35c8ba9ca9761c0215128bfbbc.png

这会对你有所帮助

二、忘记用户名密码

如果隔段时间不用的话,可能就会出现这样的问题,因为博主的用户名密码都比较长,更容易忘,痛定思痛,决定改成最常用的123…

正常情况下,可以这样做:

跳过权限表

mysqld –skip-grant-tables

密码置空

UPDATE user SET authentication_string='' WHERE user='root';

8.0 无法这样用

处理

方式一:利用 --init-file参数

停止MySQL服务

# dos窗口,输入命令:

net stop mysql # 或者 Ctrl+Alt+delete,打开任务管理器,找到服务中的MySQL80项,右键选择停止

在MySQL目录下,新建一个文件,如reset_password.txt:

# 目录:C:\ProgramData\MySQL\MySQL Server 8.0

# 文件内容输入:

ALTER USER 'root'@'localhost' IDENTIFIED BY '123456'; # 根据个人需要修改

打开dos窗口

# 执行以下命令,关闭dos窗口

mysqld --init-file=C:\ProgramData\MySQL\MySQL Server 8.0\reset_password.txt --console # 可以自己修改

启动服务

net start mysql # 或者去任务管理器中开启

最后输入修改的用户密码登录

mysql -uroot -p123456 # 以实际为准

方式二:越过权限表

停止服务:

net stop mysql

管理员方式打开DOS窗口:

mysql --shared-memory --skip-grant-tables datadir="C:/ProgramData/MySQL/MySQL Server 8.0/Data"

再开一个命令行窗口,直接登陆mysql:

mysql [-uroot -p]

# 清空密码

use mysql;

update user set authentication_string='' where user='root';

关闭之前的窗口,重启服务:

net start mysql

无密码登录,修改密码:

mysql -uroot -p

# 修改

use mysql;

alter user root@localhost identified by '123456';

密码登录,查看:

mysql -uroot -p123456

三、API接口无法连接数据库

昨天测试了一下,php连接数据库,发现连接失败。而本地打开数据库是可以的。

3.1. SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client。

这应该是身份验证插件的问题,

于是通过phpinfo() 查看了一下php版本信息:

0acb1461b8819396584fa8485402dcc8.png

对比MySQL8.0信息:

4f281fcfbbccd202d8f8aee46244573b.png

显然身份验证插件不匹配,php7.3.4居然还没支持sha2的,没办法,只能在数据库中改为php支持的了,如:mysql_native_password 。

修改之:

CREATE USER 'test'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

或者更新一下:

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

当然也可以去my.ini 文件中,将 default_authentication_plugin=caching_sha2_password 中的sha2插件改掉。

四、权限修改

在连接数据库时,出现以下错误:

SQLSTATE[HY000] [1044] Access denied for user ‘XXX’@‘localhost’ to database ‘tests’.

大概能猜到,应该是权限的问题,接下来,修改权限:

4.1. 添加用户

CREATE USER 'username'@'localhost' IDENTIFIED [WITH mysql_native_password] BY 'password';

4.2. 更新密码

ALTER USER 'username'@'localhost' IDENTIFIED [WITH mysql_native_password] BY 'new_password';

4.3. 授予/更改权限

GRANT ALL ON *.* TO username@localhost WITH GRANT OPTION;

4.4. 查看用户信息

# 表结构

desc user;

# 用户信息

select User,Host,authentication_string from user;

# 查看权限

show grants for username@localhost;

解决!

以后遇到再补充!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值