Jerran

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Centos 刚装了mysql

yum install mysql

安装成功了,安装最后要求输入了密码,也输入了,OK

mysql -uroot -p

输入设置的密码

竟然报错了!

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YSE)

问朋友,他说初始密码是空的,可我命名设置了密码的阿。

密码留空

还是错误!

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

于是重改密码!

# /etc/init.d/mysql stop
# mysqld_safe --user=mysql --skip-grant-tables --skip-networking;
# mysql -u root mysql
mysql> UPDATE user SET Password=PASSWORD('123456') where USER='root';
mysql> FLUSH PRIVILEGES;
mysql> quit

# /etc/init.d/mysql restart
# mysql -uroot -p
Enter password:123456

mysql>

利用安全模式成功登陆,然后修改密码,等于给MySql设置了密码。登陆进去后,想创建一个数据库测试下。得到的结果确实:

ERROR 1820 (HY000): You must SET PASSWORD before executing this statement

非常诡异啊,明明用密码登陆进去了,怎么还提示需要密码。
参考官方的一个文档,见http://dev.mysql.com/doc/refman/5.6/en/alter-user.html。如下操作后就ok了:

 

mysql> create database yan1;
ERROR 1820 (HY000): You must SET PASSWORD before executing this statement
mysql>  SET PASSWORD = PASSWORD('123456');
Query OK, 0 rows affected (0.03 sec)

mysql> create database yan1;
Query OK, 1 row affected (0.00 sec)

也就是用mysql>  SET PASSWORD = PASSWORD('123456');这句话重新设置一次密码!

 

改密码的注意事项

假定现在用密码123456 可以登陆到数据库,要将密码改成zhou。

 

第一种方式:在终端里,注意现在还没有登陆到数据库,输入命令mysqladmin -p123456 password zhou

会出现这么一句警告:Warning: Using a password on the command line interface can be insecure.这表示已经改成功了。常见的误区:
      误区一:用原密码已经登陆到mysql了,再这么改就会报错。一定注意,直接在终端里,未登陆前改。

      误区二:将-p123456 写成 -p 123456.这样会报错的,-p后面不能带空格。

      误区三:password前面加了一个“-”.也是会报错。

注意:password和新密码之间一定要有空格。新密码可以用""括起来。当有特殊字符时,这个引号是必须的。

 

第二种方式:登陆到mysql后,进行更改

mysql> update mysql.user set password=PASSWORD('yanyan') where user='root';
Query OK, 4 rows affected (0.00 sec)
Rows matched: 4  Changed: 4  Warnings: 0

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

误区:只运行了第一行命令,没有flush privileges是改不了密码的。全弄成小写的。经验证完全可行。

    综合来看我更喜欢第一种改密码的方式。

posted on 2015-05-22 18:18  Jerran  阅读(381)  评论(0编辑  收藏  举报