文1菜鸡乱给权限导致ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password: YES)的解决方法
登录MySQL时突然报错(ps:自己确定用户名和密码没错),这种情况的解决方法
1,报错如下:
2,解决方法:
2,1 问题分析
在关闭数据库的命令发现mysql关不了,提示Warning: World-writable config file '/etc/mysql/mysql.conf.d/mysqld.cnf' is ignored
,大概意思是权限全局可写,任何一个用户都可以写。mysql担心这种文件被其他用户恶意修改,所以忽略掉这个配置文件。这样mysql无法根据此文件去配置MySQL。
2,2根据分析解决问题
1)停止mysql服务
service mysql stop
- 此时将
/etc/mysql/mysql.conf.d/mysqld.cnf
文件的权限从777改为644
chmod 644 /etc/mysql/mysql.conf.d/mysqld.cnf
- 重启mysql服务
service mysql start
文2ubuntu下忘记MySQL密码的解决方案
首先出现这个问题是密码出了问题,我们需要跳过密码验证进入mysql进行修改密码
1.跳过密码验证进入mysql
vim /etc/mysql/mysql.conf.d/mysqld.cnf
找到[mysqld]这一块代码,在后面加上skip-grant-tables,如下图
保存后重启mysql
service mysql restart
2,接着输入
mysql -u root -p
在输入密码的那里直接enter就好,这样就可以无密码进入
输入"show databases;"查看数据库
show databases;
在mysql里的mysql数据库有一个user表,存储的是数据库用户的信息,我们需要修改的里面用户的密码;
输入use mysql;是要使用mysql数据库的意思
use mysql;
接着输入show tables;查看mysql数据库下面有哪些表
show tables;
可以看到里面有user这个表,现在可以查询一下里面有什么信息
发现里面有很多东西,其中authentication_string就是密码列
在很多网上的博客中都写修改密码要用password=password(“123456”);我试了一下不对,会提示user表中没有这一列,可能是mysql之前的版本是password,现在改成了authentication_string.
现在输入update user set authentication_string=password(“yourNewPassword”) where User=‘root’;(数据库更新语句哈)
update user set authentication_string=password("123456") where User='root';
然后输入exit;
退出mysql界面
3,回到第一步,将密码输入跳过设置删除
找到[mysqld]
这一块代码,删除第一步加入的skip-grant-tables
,如下
保存后就可以输入service mysql restart
,重启mysql.
接着输入mysql -u root -p
,回车输入密码就不会在出错了
步加入的skip-grant-tables
,如下
保存后就可以输入service mysql restart
,重启mysql.
接着输入mysql -u root -p
,回车输入密码就不会在出错了