你的位置:首页 > 数据库

[数据库][mysql]三种方法为root账户指定密码


前言:前段时间把mysql安装后一直没管它,当时就在奇怪为什么mysql登陆不要密码,原来一直用的超用户账户登陆的(简称超级用户)

       其实只怪自己太无知,之前一直用的phpbydamin进行的数据库的可视化管理,哪里知道这么详细呢?

       本文原文来源mysql官方文档5.1

正文:最开始可以使用SELECT User.Password FROM mysql.user查询mysql数据库root账户的密码

你可以用几种方法为root账户指定密码。以下介绍了三种方法:

·         使用SET PASSWORD语句

·         使用mysqladmin命令行客户端程序

·         使用UPDATE语句

要想使用SET PASSWORD指定密码,用root连接服务器并执行两个SET PASSWORD语句。一定要使用PASSWORD()函数来加密密码。

在Windows中的语句:

shell> mysql -u root
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpwd');
mysql> SET PASSWORD FOR 'root'@'%' = PASSWORD('newpwd');

在Unix中的语句:

shell> mysql -u root
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpwd');
mysql> SET PASSWORD FOR 'root'@'host_name' = PASSWORD('newpwd');

用服务器主机名替换第二个SET PASSWORD语句中的host_name。这是你指定匿名账户密码的主机名。

要想使用mysqladmin为root账户指定密码,执行下面的命令:

  shell> mysqladmin -u root password "newpwd"
  shell> mysqladmin -u root -h host_name password "newpwd"

上述命令适用于Windows和Unix。用服务器主机名替换第二个命令中的host_name。不一定需要将密码用双引号引起来,但是你如果密码中包含空格或专用于命令解释的其它字符,则需要用双引号引起来。

你还可以使用UPDATE直接修改user表。下面的UPDATE语句可以同时为两个root账户指定密码:

shell> mysql -u root
mysql> UPDATE mysql.user SET Password = PASSWORD('newpwd')
    ->     WHERE User = 'root';
mysql> FLUSH PRIVILEGES;

UPDATE语句适用于Windows和Unix。

设置完密码后,当你连接服务器时你必须提供相应密码。例如,如果你想要用mysqladmin 关闭服务器,可以使用下面的命令:

shell> mysqladmin -u root -p shutdown
Enter password: (enter root password here)