MYSQL 1045:不能连接数据库,用户名或密码错误
连接mysql数据库时偶尔会出现1045错误,如果你是登录mysql出现的错误,可以直接看解决方法了。
在安装mysql 数据库的时候,经常出现 1045错误
其具体的提示为:
该错误只在Windows系统上出现,Linux下好像好没有,据说这个错误已经存在n年了,有人extremely dispointed that it still exists here in 2009!
错误的原因更令人抓狂,那就是mysql server instance config wizard根本没有为你设密码,于是root密码是空!实在不明白如果没有为我设密码那中间为什么叫我设个密码。
解决办法:
I clicked Skip on the dialog that states the Error 1045…
Then cancelled the “MySQL Server Instance Config Wizard”
Now…
打开一个命令行窗口,输入:mysql -u root -p
这时会提示你输入密码,直接回车(即密码为空),进入MySQL管理,输入以下命令:
mysql>use mysql
mysql>select user, host, password from user;
# Now you should see that u have 3 entries
+—————————–+
| user | host | password |
+—————————–+
| root | localhost | |
| root | 127.0.0.1 | |
| | localhost | |
+—————————–+
mysql> delete from user where host=”localhost” and user=”";
mysql> update user set password=password(“xxxx”) where user=”root”;
mysql> flush tables;
mysql> flush privileges;
mysql> quit
Now the mysql table should be updated and everything fixed.
Try it out…
然后就可以用config wizard跑一遍了,在输入密码的步骤时,取消勾选输入密码部分,直接下一步,MySQL启动成功!
如果系统以前已经安装过mysql数据库,而密码又忘记了。 这时候可以先skip,然后按照下面的方案进行。
解决方案:
1、以系统管理员身份登录到系统;
2、如果MySQL服务器正在运行,停止它。
如果是作为Windows服务运行的服务器,进入服务管理器:开始菜单->控制面板->管理工具->服务
如果服务器不是作为服务而运行的,可能需要使用任务管理器来强制停止它。
3、创建1个文本文件,并将下述命令置于单一行中:
SET PASSWORD FOR ‘root’@'localhost’ = PASSWORD(‘xxxx’);
用任意名称保存该文件。在本例中,该文件为C:\mysql-init.txt。
4、进入DOS命令提示:开始菜单->运行-> cmd
假定你已将MySQL安装到C:\mysql。如果你将MySQL安装到了另一位置,请对下述命令进行相应的调整。
在DOS命令提示符下,执行命令:
C:\> C:\mysql\bin\mysqld-nt –init-file=C:\mysql-init.txt
在服务器启动时,执行由“–init-file”选项(作用:在启动时从指定的文件中读取SQL命令)命名的文件的内容,更改根用户密码。当服务器成功启动后,应删除C:\mysql-init.txt。
5、停止MySQL服务器,然后在正常模式下重启它。如果以服务方式运行服务器,应从Windows服务窗口启动它。如果以手动方式启动了服务器,能够像正常情形下一样使用命令。
mysql密码忘记的解决方法
解决办法: 在windows下:
打开命令行窗口,停止mysql服务: Net stop mysql 启动mysql,一般到mysql的安装路径,找到 mysqld-nt.exe 执行:mysqld-nt --skip-grant-tables 当前窗口将会停止。 (或者mysqld --skip-grant-tables) 另外打开一个命令行窗口,执行mysql 如果提示没有这个命令,先进入MYSQL的安装位置下BIN目录再运行mysql >use mysql >update user set password=password("new_password") where user="root"; >flush privileges; >exit 用Ctrl+Alt+Del,找到mysqld-nt的进程杀掉它,在重新启动mysql-nt服务,就可以用新密码登录了 在linux下:
如果 MySQL 正在运行,首先杀之: killall -TERM mysqld。 启动 MySQL :bin/safe_mysqld --skip-grant-tables & 或者 mysqld_safe --skip-grant-tables & 就可以不需要密码就进入 MySQL 了。 然后就是 >use mysql >update user set password=password("new_pass") where user="root"; >flush privileges; 重新杀 MySQL ,用正常方法启动