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

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

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

查看当前登录用户:

select user();

查看用户:

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

用户添加和授权

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

删除用户

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

修改用户密码:

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

修改用户host:

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

查看某个用户权限:

show grants for zabbix;

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

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

查看MySQL的认证方式

show variables like 'default_authentication_plugin';

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

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

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

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

密码过期时间管理

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

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

show variables like 'default_password_lifetime';

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

[mysqld]

default_password_lifetime=0

或直接在MySQL中进行设置。

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

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

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

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

CREATE USER 'mike'@'%' PASSWORD EXPIRE NEVER;
ALTER USER 'mike'@'%' PASSWORD EXPIRE NEVER;

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

CREATE USER 'mike'@'%' PASSWORD EXPIRE DEFAULT;
ALTER USER 'mike'@'%' PASSWORD EXPIRE DEFAULT;

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

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

锁定/解锁用户帐户

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

创建一个带帐户锁的用户

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

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

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

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

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

修改一个用户为锁定状态

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. 从零开始的全栈工程师——ajax

    AJAX AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术. AJAX = Asynchronous JavaScript and XML. AJAX 是一种用于创建快速动态网页 ...

  2. dl +rec

    AutoEncoder http://blog.csdn.net/studyless/article/details/70880829

  3. Spyder更改默认工作路径已经文件路径

    打开spyder,选择菜单栏中的Tools--->Preferences--->Current working directory   然后选择最下面的单选按钮The following ...

  4. how find a record import other database.

    question:how find a record import other database. answer: solution one:you user insert into table_na ...

  5. Android 回调的理解,觉得写得好就转过来。。。收藏一下

    转自:一个经典例子让你彻彻底底理解java回调机制 以前不理解什么叫回调,天天听人家说加一个回调方法啥的,心里想我草,什么叫回调方法啊?然后自己就在网上找啊找啊找,找了很多也不是很明白,现在知道了,所 ...

  6. Echarts横坐标倾斜,顶部显示数字

    最近项目使用到Echarts,所以学习了下 根据API,实现Echarts很简单,在这就不多说了,下面就说说项目中碰到的一些需求 1.由于横坐标很多,导致数据不能展示完整,所以需要设置横坐标样式倾斜展 ...

  7. struts2+extjs文件上传完整实现(攻克了上传中的各种问题)

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/shanhuhau/article/details/28617999 首先须要引入上传控件 <s ...

  8. luogu P4168 [Violet]蒲公英

    嘟嘟嘟 分块经典题竟然是一道黑题…… 分块求区间众数的大体思想是对于询问区间[L, R],预处理出这中间的整块的众数,然后统计两边零散的数在[L, R]中出现的次数,最后取出现次数最多且最小的数. 因 ...

  9. CF633C Spy Syndrome 2

    嘟嘟嘟 题面:把一句话加密:1.所有字母变成小写.2.翻转所有单词.3.去掉空格.然后给你一句加密后的字符串以及一些出现在原句和没有出现在原句的单词,让你还原原句.注意,每一个单词可以使用多次,如果有 ...

  10. servlet三种方式实现servlet接口

    简单介绍 Servlet接口实现类 1.Servlet接口SUN公司定义了两个默认实现类,分别为:GenericServlet.HttpServlet. 2.HttpServlet指能够处理HTTP请 ...