服务器之家:专注于服务器技术及软件下载分享
分类导航

Mysql|Mssql|Oracle|Redis|

服务器之家 - 数据库 - Mysql - MySQL 密码设置

MySQL 密码设置

2019-10-26 19:24mysql教程网 Mysql

本文介绍了如何修改一个用户的密码,你可以使用三种方法,GRANT语句、SET PASSWORD语句、直接修改授权表以及使用管理工具mysqladmin。

一个重要的应用就是如何在遗忘root用户密码的时候修改密码,使用的方法是启动MySQL服务器时忽略加载授权表。
由MySQL使用用户名和口令的方法与Unix或Windows使用的方式有很多不同之处: 
  ·MySQL 使用于认证目的的用户名,与Unix用户名(登录名字)或Windows用户名无关。缺省地,大多数MySQL客户尝试使用当前 Unix用户名作为MySQL用户名登录,但是这仅仅为了方便。客户程序允许用-u或--user选项指定一个不同的名字,这意味着无论如何你不能使得一个数据库更安全,除非所有的MySQL用户名都有口令。任何人可以试图用任何名字连接服务器,而且如果他们指定了没有口令的任何名字,他们将成功。 
  ·MySQL用户名最长可以是16各字符;典型地,Unix用户名限制为8个字符。 
  ·MySQL口令与Unix口令没关系。在你使用登录到一台Unix机器口令和你使用在那台机器上存取一个数据库的口令之间没有必要有关联。 
  ·MySQL加密口令使用了一个Unix登录期间所用的不同算法。 
  本节将介绍如何为MySQL数据库系统的用户修改密码。 
  使用myadmin实用程序 
  使用mysqladmin实用程序修改密码的命令行是: 
  shell>mysqladmin -u user -p password "newpassword" 
  运行这个命令,在提示输入密码时,数据就密码,则用户user的密码就被改为newpassword 
  。如果,原来的用户没有密码,则不比指定-p选项。例如,初始化授权表之后,root用户的密码就是空的,你可以这样为root用户设立密码: 
  shell>mysqladmin -u root password "newpassword" 
  使用语句SET PASSWORD 
  使用mysqladmin为用户修改密码有一个明显的缺点,就是必须知道用户原来的密码,如果是为了给遗忘了密码的用户重设密码就无能为力了。一个专门用于修改密码的SQL语句为SET PASSWORD: 
  ·SET PASSWORD = PASSWORD('some password') 
  设置当前用户的口令。任何非匿名的用户能改变他自己的口令! 
  连接到服务器后,你可以这样改变自己的密码: 

复制代码代码如下:


  mysql> SET PASSWORD = PASSWORD('another pass'); 
  ·SET PASSWORD FOR user = PASSWORD('some password') 


  设置当前服务器主机上的一个特定用户的口令。只有具备存取mysql数据库的用户可以这样做。用户应该以user@hostname格式给出,这里 user和hostname完全与他们列在mysql.user表条目的User和Host列一样。例如,如果你有一个条目其User和Host字段是 'bob'和'%.loc.gov',你将写成: 
  mysql> SET PASSWORD FOR bob@"%.loc.gov" = PASSWORD("newpass"); 
  直接修改授权表 
  另一种修改,密码的方法是直接修改授权表user。只有具备存取mysql数据库的用户可以这样做。 
  例如,如果你有一个条目其User和Host字段是'bob'和'%.loc.gov',你将写成: 
  mysql> UPDATE mysql.user SET password=PASSWORD("newpass") where user="bob' AND host="%.loc.gov"; 
  mysql>FLUSH PRIVILEGES; 
  重新设置一个遗忘的root口令 
  如果你遗忘了root用户的口令,那么将会是一件非常麻烦的事。除非你有其它有特权的用户,否则很多操作都无法完成,例如,关闭数据库等等。 
  你应当选用--without-grant-tables选项启动mysqld服务,你可以在这时更改授权表的相关内容,也可以用mysqlaccess检查你的授权是否到位。 
  例如,如果你忘记了你的MYSQL的root口令的话,你可以通过下面的过程恢复。 
  1、关闭MySQL服务器 
  向mysqld server 发送kill命令关掉mysqld server(不是 kill -9),存放进程ID的文件通常在MYSQL的数据库所在的目录中。 
  kill `cat /mysql-data-directory/hostname.pid` 
  你必须是UNIX的root用户或者是你所运行的SERVER上的同等用户,才能执行这个操作。 
  如果在windows平台上,也可以停止进程。如果是NT还可以用net stop mysql命令关闭数据库。 
  2、使用'--skip-grant-tables' 参数来启动 mysqld。 
  Unix平台: 
  $su mysql 
  $safe_mysqld --skip-grant-tables & 
  Windows平台: 
  C:\mysql\bin>mysqld --skip-grant-tables 
  以上语句,假定都位于正确的目录。 
  3、连接到服务器,修改口令 
  使用'mysql -h hostname mysql'命令登录到mysqld server ,用grant命令改变口令: 
  mysql>GRANT ALL ON *.* TO root@localhost INDENTIFIED BY 'new password' 
  -> WITH GRANT OPTION; 
  mysql>GRANT ALL ON *.* TO root@% INDENTIFIED BY 'new password' 
  -> WITH GRANT OPTION; 
  (如果存在一个能从任意地址登录的root用户,初始化授权表后,生成该用户,为了安全,你可能已经删除该用户)。 
  其实也可以直接修改授权表: 
  mysql> use mysql; 
  mysql> update user set password =password('yourpass') where user='root'; 
  你可能使用工具mysqladmin修改密码: 
  shell> mysqladmin -h hostname -u root password 'new password 
  但是它修改的密码语服务器匹配的用户有关。如果,你从服务器主机连接,那么服务器匹配的是root@localhost,修改该用户密码,否则一般修改root@%密码,除非你有其它root用户存在。 
  4. 载入权限表: 
  shell> mysqladmin -h hostname flush-privileges 
  或者使用 SQL 命令`FLUSH PRIVILEGES'。 
  当然,在这里,你也可以重启mysqld。

延伸 · 阅读

精彩推荐
  • MysqlMySQL配置SSL主从复制

    MySQL配置SSL主从复制

    本文给大家分享的是如何给mysql配置SSL主从复制的具体方法,分别给出了5.6和5.7两个版本的实例,希望大家能够喜欢...

    浮生凤年4632019-06-12
  • MysqlMySQL8新特性:降序索引详解

    MySQL8新特性:降序索引详解

    在数据库中我们一般都会对一些字段进行索引操作,这样可以提升数据的查询速度,下面这篇文章主要给大家介绍了关于MySQL8新特性:降序索引的相关资料,...

    iVictor1602019-07-02
  • Mysql在同一台机器上运行多个 MySQL 服务

    在同一台机器上运行多个 MySQL 服务

    在Mysql中有一mysqld_multi命令,可用于在一台物理服务器运行多个Mysql服务,今天参考一些文档,亲自测试并通过,真高兴,现将操作过程共享给大家!...

    MySQL教程网1982019-10-15
  • MysqlWindows下mysql 8.0.11 安装教程

    Windows下mysql 8.0.11 安装教程

    这篇文章主要为大家详细介绍了Windows下mysql 8.0.11安装教程 ,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    dhweicheng5792019-07-15
  • MysqlMysql事务隔离级别之读提交详解

    Mysql事务隔离级别之读提交详解

    这篇文章主要介绍了Mysql事务隔离级别之读提交详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    旧梦发癫4412019-06-10
  • MysqlMySQL数据库监控软件lepus使用问题以及解决办法

    MySQL数据库监控软件lepus使用问题以及解决办法

    这篇文章主要介绍了MySQL数据库监控软件lepus使用问题及解决办法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下...

    coe2coe2742019-06-22
  • Mysql数据库的用户帐号管理基础知识

    数据库的用户帐号管理基础知识

    MySQL管理员应该知道怎样通过指定哪些用户可连接到服务器、从哪里进行连接,以及在连接时做什么,来设置MySQL用户账号。MySQL3.22.11引入了两个更容易进行...

    服务器之家2432019-10-15
  • MysqlMySQL中字段类型char、varchar和text的区别

    MySQL中字段类型char、varchar和text的区别

    今天小编就为大家分享一篇关于MySQL中字段类型char、varchar和text的区别,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起...

    CODETC4062019-06-01