在winxp
sp3下安装了mysql5.1出现1045错误
问题:
Mysql的1045错误
安装mysql时在最后安装过程中,最后执行“Apply
security setting”弹出ERROR Nr.1045错误。
环境:
windows xp sp3,防火强已经关闭,可以telnet localhost
3306
解决方案过程:
在winxp下安装了mysql5.1没有出现错误提示,使用C:\Program
Files\MySQL\MySQL Server
5.1\bin\下的MySQLInstanceConfig.exe工具,配置时,到最后阶段出现ERROR
NR.1045错误,又在cmd窗口下,启动mysql时,同样出现ERROR
1045 (28000): Access denied for user 'root'@'localhost' (using
password:
YES),参考了网上n多办法没有解决。在控制面板”-->选择“管理工具”-->选择“服务”,将MySQL停掉,再启动MySQL,还是有1045错误,又删除了C:\Program
Files\MySQL\MySQL Server
5.1下的my.ini文件,重装系统后,再安装Mysql,到最后一步Apply
security settings,又遇到1045问题了。
错误代码
1045
Access
denied for user 'root'@'localhost' (using password:YES)
google了下:
原来是{$MYSQL_HOME}\data下的数据库文件问题,data下保存着之前root的登陆用户信息等。马上查我是脑上目录:C:\Documents
and Settings\All Users\Application Data\MySQL\MySQL Server
5.5\data下果然有以前的数据。
我的办法是:删掉{$MYSQL_HOME}\data下的所有文件,然后安装。ok...
这样做是不是太残忍了
又google了下:
解决办法是重新设置root用户密码,在Windows平台下操作步骤如下:
1、以系统管理员身份登录到系统;
2、如果MySQL服务器正在运行,停止它。
如果是作为Windows服务运行的服务器,进入服务管理器:开始菜单->控制面板->管理工具->服务
如果服务器不是作为服务而运行的,可能需要使用任务管理器来强制停止它。
3、创建1个文本文件,并将下述命令置于单一行中:
SET PASSWORD FOR 'root'@'localhost' =
PASSWORD('MyNewPassword');
用任意名称保存该文件。在本例中,该文件为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常用操作(网上查的)
1、增加了密码后的登录格式如下:
mysql -u root
-p
2、修改登录密码
1) mysqladmin
-u用户名 -p旧密码
password 新密码
例:mysqladmin -u root password
21century
注:因为开始时root没有密码,所以-p旧密码一项就可以省略了。
2)直接修改user表的root用户口令:
mysql> user mysql;
mysql> update user set pasword=password('21century') where
user='root';
mysql> flush privileges;
注:flush
privileges的意思是强制刷新内存授权表,否则用的还是缓冲中的口令。
3、测试密码是否修改成功
1)不用密码登录
[root@test1 local]#
mysql
ERROR 1045: Access denied for user:
'root@localhost' (Using password: NO)
显示错误,说明密码已经修改。
2)用修改后的密码登录
[root@test1 local]# mysql -u root
-p
Enter password:
(输入修改后的密码21century)
Welcome to the MySQL monitor. Commands end with ;
or \g.
Your MySQL connection id is 177 to server version:
3.23.48
Type 'help;' or '\h' for help. Type '\c' to clear the
buffer.
mysql>
成功!
这是通过mysqladmin命令修改口令,也可通过修改库来更改口令
4、启动和停止
启动mysql服务:net
start mysql5
停止mysql服务:net
stop mysql
启动:Mysql从3.23.15版本开始作了改动,默认安装后服务要用mysql用户来启动,不允许root用户启动。
如果非要用root用户来启动,必须加上--user=root参数
(./safe_mysqld --user=root &)
停止:mysqladmin -u root -p
shutdown
5、导出meeting数据库:
mysqldump -uroot -p21century meeting > db_meeting.sql
导人dbname数据库
mysqldump -uroot -p21century dbname < xxx.sql
导入数据库还可用类似于oracle中@my_script.sql的方式一次执行大量sql语句,这在使用mysqldump不起作用时非常有用。
例:#./mysql -uroot -p <
/home/xuys/db_meeting_2003.sql
(注:create
database、use databasename、create
table和insert
into语句都可写在上面的脚步文件中)
其解决办法是让windowxp自带的防火墙,允许mysql程序通过,其方法如下:
WINDOWS:
方法
1.以系统管理员身份登陆系统。
2.打开cmd-----net start
查看mysql是否启动。启动的话就停止net stop
mysql.
3.我的mysql5安装在D:\MySQL\MySQL
Server 5.0下。
4.跳过权限检查启动mysql.
D:\MySQL\MySQL Server 5.0\bin\mysqld-nt
--skip-grant-tables
5.重新打开cmd。进到D:\MySQL\MySQL
Server 5.0\bin下:
D:\MySQL\MySQL Server 5.0\bin\mysqladmin -uroot
flush-privileges password "newpassword"
D:\MySQL\MySQL Server 5.0\bin\mysqladmin -u root
-p shutdown 这句提示你重新输密码。
6.在cmd里net start
mysql
7.搞定了。
使用上诉方案在step 5还是无法重置密码。
4
最终解决方案:
1.手动停止mysql服务。
2.修改D:\MySQL\MySQL
Server 5.0\
目录下的my.ini文件,在[mysqld]下添加
skip-grant-tables
3.启动mysql服务后就可以以空密码登录
4.务必修改root密码
5.把
skip-grant-tables 这一句删掉(在D:\MySQL\MySQL Server
5.0\ 目录下的my.ini文件)
6.重启mysql服务。
7.成功登录.
1、使用Windows防火墙打开端口。开始-〉控制面板->windows防火墙-〉例外。
2、点击“添加端口”按钮:名称:mysql
端口号:3306
3、点击“添加程序”按钮:添加Mysql(C:/Programs Files/mysql
5.x.x/bin/mysql.exe )
4、然后使用控制面板---->管理工具---->服务来停止mysql服务,再重新启动。
最后在cmd中输入mysql服务成功启动。
1.进入cmd手动停止mysql服务:net
stop mysql。
2.修改C:\Program Files\MySQL\MySQL Server
5.1\
目录下的my.ini文件,在[mysqld]下添加skip-grant-tables
3.在cmd中启动mysql服务:net
start mysql
4、打开mysql直接按回车以空密码登录
5、退出mysql,停止mysql服务:net
stop mysql
6、将第2步添加的skip-grant-tables语句删掉
7、启动mysql服务:net start
mysql
use
mysql
8、打开mysql以空密码登录
9、修改密码
10、退出mysql,重新配置
update
user set password = password('123456') where user =
'root';