我是多久没操作过数据库了,忘的一干二净,以后笔记都得记录下来。先说说今天做了个啥,xampp安装的mysql,默认的root用户是没有密码的,而很多程序中,输入用户名和密码来链接mysql,要求密码不能为空,所以:就上网上查找,修改mysql用户的密码,也是不仔细,犯了同下面这位兄弟一样的错误!
mysql> use mysql;
Database changed
mysql> update user set password='master' where user='root';
Query OK, 3 rows affected (0.05 sec)
Rows matched: 3 Changed: 3 Warnings: 0
mysql> flush privileges;
Query OK, 0 rows affected (0.16 sec)
注意:上面红色的部分,是错误的!设置密码的语句应该是:
update user set password = PASSWORD('root')where user = 'root';
接下来是解决方案,网上搜的记录下来:
1、首先停止正在运行的MySQL进程
Linux下,运行
killall -TERM mysqld
Windows下,如果写成服务的 可以运行:
net stop mysql
,如未加载为服务,可直接在进程管理器中进行关闭。
2、以安全模式启动MySQL
Linux下,运行
mysqld_safe --skip-grant-tables &
Windows下,在命令行下运行
X:/MySQL/bin/mysqld-nt.exe --skip-grant-tables // 我这里使用的是mysqld.exe 程序
(看有的地方可能需要加配置文件的路径 --defaults-file="C:\Program Files\MySQL\MySQL Server 5.1\my.ini" --console,我这里没用可以)
3、完成以后就可以不用密码进入MySQL了
Linux下,运行
mysql -u root -p
进入Windows下,运行
X:/MySQL/bin/mysql -u root -p// 不用密码登录即可进入
4、更改密码 // 依旧是最上面的3步
>use mysql
>update user set password=password("新密码") where user="root";
>flush privileges;
上面这个方法,可能是公认的正确方法。我测试也是通过的,下面这2个方法是其他地方别人查找的,并没经过验证,也贴出来:
方法二:
直接使用/etc/mysql/debian.cnf文件中[client]节提供的用户名和密码:
# mysql -udebian-sys-maint -p
Enter password: <输入[client]节的密码>
mysql> UPDATE user SET Password=PASSWORD(’newpassword’) where USER=’root’;
mysql> FLUSH PRIVILEGES;
mysql> quit
# mysql -uroot -p
Enter password: <输入新设的密码newpassword>
mysql>
内容来自: 脚本之家 www.jb51.net
另一个方法
Windows:
1. 管理员登陆系统,停止mysql服务或者结束mysqld-nt进程
2. 进入命令行,来到mysql的安装目录.假设安装目录为 d:\mysql\ , CMD进入命令行
3. 运行 d:\mysql\bin\mysqld-nt --skip-grant-tables 启动mysql,关闭权限的检查
4. 运行 d:\mysql\bin\mysqladmin -u root flush-privileges password "newpassword" 重设root密码
5. 重新启动mysql服务
第4步也可以直接修改mysql表,所用到的SQL语句同linux部分,这里就不再重复了.