修改权限时报:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using passwor

liunx 下该如何解决

方法如下:

1、找到配置文件my.ini  ,然后将其打开,可以选择用NotePadd++打开。

2、打开后,搜索mysqld关键字,找到后,在mysqld下面添加skip-grant-tables,保存退出。

3、重启mysql服务。在任何路径目录下,都可以关闭/重启mysql的服务呢。

4、进入数据库,重设置密码。

5、密码重设置成功,改好之后,再修改一下my.ini这个文件,把我们刚才加入的"skip-grant-tables"这行删除,保存退出再重启mysql服务就可以了。

6、重启mysql服务,并登录mysql用户,用户是root,密码是rootroot。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-02-24
第一步:以系统管理员身份登录到系统;
第二步:如果MySQL服务器正在运行,停止它。 方法有两个,1:开始菜单->控制面板->管理工具->服务,找到Mysql服务停掉。2:右击我的电脑->管理->服务与应用->服务,找到mysql服务停掉。3:Ctrl+Alt+Delete->启动服务管理器->服务,找到mysql服务停掉。(这一步这么简单,我写的太详细,不应该不应该啊!浪费电平啊!)
第三步:选择一个硬盘最外面创建一个txt文件,为什么呢?因为这个txt只是辅佐你解决掉这个错误,解决掉错误它的光荣任务就完成了,就可以壮烈牺牲了,不要感到可惜,它没有生命的。比如放在:C:\mysql-init.txt。(这个txt最好还是取这个名字,不要个性化,其他不知道行不行,我也没有实验过,这个名字正好是Mysql的进程名字,不要问为什么是这个名字,计算机这东西在中国是不能问为什么的,知道是这样就行了。)在里面输入一句话:
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('123456');
后面的那串数字是我重新设置的密码,因为我MyEclipse的项目里面默认的都是这个密码,你们改回自己想要的密码就行了。
第四步:进入DOS命令提示:开始菜单->运行-> cmd ,然后cd到你安装Mysql的目录下,当然我的Mysql埋的比较比较深,C:\Program Files\MySQL\MySQL Server 5.0\bin>。如果你将MySQL安装到了另一位置,请对下述命令进行相应的调整。 在DOS命令提示符下,执行命令:
C:\Program Files\MySQL\MySQL Server 5.0\bin>mysqld-nt --init-file=C:\mysql-init.txt 。
第五步:启动服务,步骤和第二步一样。在服务器启动时,执行由“--init-file”选项(作用:在启动时从指定的文件中读取SQL命令)命名的文件的内容,更改根用户密码。当服务器成功启动后,应删除C:\mysql-init.txt。这个时候这个txt的任务完成了。如果起动MySQL服务器出错,把进程mysqld-nt.exe关闭(第二步的第三种方法可以找到进程关掉)。然后重启它,OK。
最后就可以用你在第三步设置的密码>mysql -uroot -p 去链接Mysql数据库了。
但是你会问难道我每次改密码都要弄出这个错来,还要牺牲一个txt才能改密码成功吗?就没有一条指令搞定改密码这种简单的事情,当然不是啦。具体方法就是你用这条指令>mysqladmin -uroot -p123456 password abc123;改密码的时候,要用这个指令>mysql -uroot -p123456登录,而不是换行输进密码,登录之后再在mysql>操作符后面加上一句给权限的语句(很多资料并没有表述明白下面这条指令什么什么时候输入,搞得很多人以为是在改完密码过后立刻输入,就会有报错声音):
grant all on mysql.* to 'root'@'localhost' identified by 'password';
最后那个password即是你要修改的root用户的密码 。我这里是“123456”这个时候下次登录才可以用>mysql -uroot -p。Enter Password:123456登录数据库。

其实以上都是废话来,如果你想改密码,直接用原来的密码登录过后,用下面任何一条指令都可以改密码,但是要重复运行同一条指令两次,第一次我把它当作改密码,第二次当作授予权限,这样一点事都没有,你可以这样子>mysql -uroot -p123456登录,还可以这样子>mysql -uroot -p。Enter Password:123456登录。其中newpassword就是新密码。
grant all on mydb.* to NewUserName@HostName identified by "newpassword" ;
grant usage on *.* to NewUserName@HostName identified by "newpassword";
grant select,insert,update on mydb.* to NewUserName@HostName identified by "newpassword";
grant update,delete on mydb.TestTable to NewUserName@HostName identified by "newpassword";
即是:
grant all onmysql.* to 'root'@'localhost' identified by "newpassword" ;
grant usage on *.* to 'root'@'localhost' identified by "newpassword";
grant select,insert,update on mydb.* to 'root'@'localhost' identified by "newpassword";
grant update,delete on mydb.TestTable to 'root'@'localhost' identified by "newpassword";
如果是自己电脑多点尝试,总会发现有办法的,公司的电脑就不要试啦,搞坏数据库。有错请指正。哈哈!本回答被网友采纳
第2个回答  2019-08-21
密码错误,重设密码就OK
相似回答