mysql安装完成之后,在/var/log/mysqld.log文件中给root生成了一个默认密码。通过下面的方式找到root默认密码,然后登录mysql进行修改:

  1. grep 'temporary password' /var/log/mysqld.log #查看默认密码

  1. set password for 'root'@'localhost'=password('Password'); #修改用户密码

查看当前登录用户:

  1. select user();

查看用户:

  1. select host,user from mysql.user; #8.0版本

用户添加和授权

  1. #8.0以前版本
  2. GRANT ALL PRIVILEGES ON *.* TO `mike`@`%` IDENTIFIED BY '000000' WITH GRANT OPTION;
  3. #8.0以后版本
  4. CREATE USER 'zabbix'@'%' IDENTIFIED BY '123456'; #创建一个用户
  5. GRANT ALL ON zabbix.* TO 'zabbix'@'%' WITH GRANT OPTION; #授予zabbix的远程登录权和zabbix远程访问的权限。

删除用户

  1. Delete FROM user Where User='zabbix' and Host='localhost'; #5.7版本
  1. delete from mysql.user where user='zabbix' and host='localhost'; 8.0版本

修改用户密码:

  1. ALTER USER "root"@"localhost" IDENTIFIED BY "new-password";

修改用户host:

  1. update user set host = 'localhost' where user = 'zabbix'; #早期版本
  1. update mysql.user set host = 'localhost' where user = 'zabbix'; #8.0版本

查看某个用户权限:

  1. show grants for zabbix;

  1. select * from mysql.user where user='zabbix'\G;

在 MySQL 8.0 中,caching_sha2_password 是默认的身份验证插件而不是之前版本的 mysql_native_password,默认的密码加密方式是 SHA2

查看MySQL的认证方式

  1. show variables like 'default_authentication_plugin';

如果需要保持之前的验证方式并保持之前版本的密码加密方式需要在配置文件 /etc/my.cnf 中修改以下配置项并重启服务后生效。

  1. [mysqld]
  2. character_set_server=utf8
  3. init_connect='SET NAMES utf8'
  4. default_authentication_plugin = mysql_native_password #更改默认密码认证方式。
  1. systemctl restart mysqld #重启服务

将某个特定用户的加密方式更改:

  1. ALTER USER 'root'@'127.0.0.1' IDENTIFIED WITH mysql_native_password BY 'password'; # 更新用户的密码加密方式为之前版本的方式
  2. FLUSH PRIVILEGES; # 刷新用户权限

密码过期时间管理

MySQL 从 5.6.6 开始引入密码自动过期的新功能,并在 MySQL 5.7.4 版本中改进了用户密码过期时间这个特性。现在可以通过一个全局变量 default_password_lifetime 来设置一个全局的自动密码过期策略。

default_password_lifetime 其默认值为 0,表示禁用自动密码过期。default_password_lifetime 的值如是是正整数 N ,则表示允许的设置密码生存周期 为 N,单位为天 。

  1. show variables like 'default_password_lifetime';

如果你要建立一个全局策略,让所有用户的密码的使用期限为六个月,可在服务端配置文件 /etc/my.cnf 中修改 default_password_lifetime 配置项的值为 180。

[mysqld]

default_password_lifetime=0

或直接在MySQL中进行设置。

  1. # 设置默认密码过期策略为 180 天后过期
  2. mysql> SET PERSIST default_password_lifetime = 180;
  3.  
  4. # 设置默认密码过期策略为永不过期
  5. mysql> SET PERSIST default_password_lifetime = 0;

创建或修改一个用户的密码过期时间为 90 天。

  1. CREATE USER 'mike'@'%' IDENTIFIED BY '000000' PASSWORD EXPIRE INTERVAL 90 DAY;
  2. ALTER USER `mike`@`%` PASSWORD EXPIRE INTERVAL 90 DAY;

创建或修改一个用户的密码过期时间为永不过期。

  1. CREATE USER 'mike'@'%' PASSWORD EXPIRE NEVER;
  2. ALTER USER 'mike'@'%' PASSWORD EXPIRE NEVER;

创建或修改一个遵循全局到期策略的用户。

  1. CREATE USER 'mike'@'%' PASSWORD EXPIRE DEFAULT;
  2. ALTER USER 'mike'@'%' PASSWORD EXPIRE DEFAULT;

查看用户的密码过期时间。

  1. mysql> select user,host,password_last_changed,password_lifetime,password_expired from mysql.user;
  2. +------------------+-----------+-----------------------+-------------------+------------------+
  3. | user             | host      | password_last_changed | password_lifetime | password_expired |
  4. +------------------+-----------+-----------------------+-------------------+------------------+
  5. | mike             | %         | 2018-05-07 11:13:39   |                90 | N                |
  6. | root             | %         | 2018-05-04 16:46:05   |              NULL | N                |
  7. | mysql.infoschema | localhost | 2018-05-04 16:45:55   |              NULL | N                |
  8. | mysql.session    | localhost | 2018-05-04 16:45:55   |              NULL | N                |
  9. | mysql.sys        | localhost | 2018-05-04 16:45:55   |              NULL | N                |
  10. | root             | localhost | 2018-05-04 16:46:05   |              NULL | N                |
  11. +------------------+-----------+-----------------------+-------------------+------------------+
  12. 6 rows in set (0.00 sec)

锁定/解锁用户帐户

从 MySQL 5.7.8 开始,用户管理方面添加了锁定/解锁用户帐户的新特性。

创建一个带帐户锁的用户

  1. mysql> CREATE USER 'mike-temp1'@'%' IDENTIFIED BY '000000' ACCOUNT LOCK;

接下来尝试用新创建的用户登陆,此时会得到一个 ERROR 3118 错误消息提示。

  1. $ mysql -umike-temp1 -p000000
  2. mysql: [Warning] Using a password on the command line interface can be insecure.
  3. ERROR 3118 (HY000): Access denied for user 'mike-temp1'@'172.22.0.1'. Account is locked.

如果你需要解锁此用户,此时就需要使用以下语句对其进行解锁了。

  1. ALTER USER 'mike-temp1'@'%' ACCOUNT UNLOCK;

修改一个用户为锁定状态

  1. ALTER USER 'mike'@'%' ACCOUNT LOCK;

MySQL——用户与密码的更多相关文章

  1. MySQL 用户登录密码和远程登录权限问题

    1.mysql数据库,忘记root用户登录密码. 解决如下: a.重置密码 #/etc/init.d/mysqld stop #mysqld_safe --user=mysql --skip-gran ...

  2. Windows如何修改MySQL用户root密码

    听语音 浏览:16925 | 更新:2015-06-12 14:49 | 标签:windows 1 2 3 4 5 6 分步阅读 MySQL是一个关系型数据库管理系统,在 WEB 应用方面 MySQL ...

  3. Windows修改MySQL用户root密码

    MySQL是一个关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软 ...

  4. Windows下Mysql 用户忘记密码时修改密码

    一般这种情况都可以用安全模式下修改来解决.安全模式下即跳过权限检查,输入账号后直接登录进mysql 1.使用管理员权限打开dos窗口,进入mysql安装目录的bin文件夹下,将Mysql服务关闭 sc ...

  5. 渗透测试环境搭建以及使用sqlmap获取mysql用户数据库密码

    通过sqlmap检测sql注入漏洞 安装SQLmap漏洞查看工具 安装渗透测试演练系统DVWA 使用SQLmap进行sql注入并获得后台管理员adnim帐号和密码 环境介绍 安装SQLmap:Rich ...

  6. Mysql 用户root密码重置

    Asterisk安装完成之后,接手新的Asterisk系统后不清楚Mysql的root账号密码. 重新重置mysql的root密码的方式 先查看mysql的版本号. 我的测试环境下的mysql版本为5 ...

  7. 修改MySQL用户的密码

    =====知道当前用户密码时===== P.S.:此文只针对windows下的用户密码更改. 1.使用进入MySQL的bin文件夹下: cd path\to\bin\mysqladmin.exe 2. ...

  8. [转帖] mysql 用户 权限 密码等操作记录

    前言 From :https://blog.csdn.net/yu12377/article/details/78214336 mysql5.7版本中用户管理与以前版本略有不同,在此记录,以备忘 登陆 ...

  9. Mysql用户root密码找回

    1.本试例的环境如下: 2.mysql数据库的版本如下,此数据库运行多实例: mysql Ver 15.1 Distrib 10.2.24-MariaDB, for Linux (x86_64) us ...

随机推荐

  1. 创建简单的node服务器

    昨天咱们说了封装ajax,今天咱们说一下 自己创建一个建议的node服务器: 话不多说直接上代码: var http = require('http') //对URL 解析为对象//1.导入模块 UR ...

  2. Android 从 Web 唤起 APP

    前言 知乎在手机浏览器打开,会有个 App 内打开的按钮,点击直接打开且跳转到该详情页,是不是有点神奇,是如何做到的呢? 效果预览 Uri Scheme 配置 intent-filter Androi ...

  3. phonegap2.0+在xcode4.5上的搭建

    首先网上很多文章都是phonegap1.X的,可是自2.0后就没有相关的安装文件了,只有官网上写了怎么装 不过官网有时候打不开,可能是首页出了问题 但http://docs.phonegap.com这 ...

  4. Recsys2018 music recomendation

    http://www.recsyschallenge.com/2018/ January 2018 Release of the "One Million Playlists" d ...

  5. PHP header() session_start() 函数前为什么不能有输出?

    前阵面试遇到的问题,当时没答上来,后来查了些资料,仍未得到答案.今天研究HTTP请求,终于知道了答案. HTTP 函数允许在其他输出被发送之前,对由 Web 服务器发送到浏览器的信息进行操作. HTT ...

  6. App后台开发架构实践笔记

    1 App后台入门 1.1 App后台的功能 (1)远程存储数据: (2)消息中转. 1.2 App后台架构 架构设计的流程 (1) 根据App的设计,梳理出App的业务流程: (2) 把每个业务流程 ...

  7. selenium 等待元素加载

    今天,尝试用代码指定自动化测试用例. 将测试record导出为C# 代码后,使用FF的drive ,发现执行一直失败,提示无法加载元素.顿时一种无力感袭来啊.还是硬着头皮找方法.尝试id name x ...

  8. Java 创建 ARM 虚拟机磁盘类型选择的问题

    问题描述 在Azure 门户创建 ARM 虚拟机时,我们直接可以选择虚拟机的磁盘类型,但是在 Azure Management Libraries for Java 的 API 中我们无法找到直接设置 ...

  9. Hadoop ->> HDFS(Hadoop Distributed File System)

    HDFS全称是Hadoop Distributed File System.作为分布式文件系统,具有高容错性的特点.它放宽了POSIX对于操作系统接口的要求,可以直接以流(Stream)的形式访问文件 ...

  10. ORA-01795: 列表中的最大表达式数为1000的解决方法

    IN中的数据量不能超过1000条. 解决方案:把条件分成多个少于1000的IN即: DELETEFROMT_MM_SECTION_SITE_UPDATEWHERE T.T_MM_SECTION_SL_ ...