MySQL用户和权限管理「建议收藏」

MySQL用户和权限管理「建议收藏」MySQL的用户账号: 由两部分组成:用户名和主机名 格式:'user_name'@'host' host必须要用引号括起来 注意:host可以是一个主机名也可以是具体

MySQL用户和权限管理

MySQL的用户账号:
  • 由两部分组成:用户名和主机名

  • 格式:”user_name”@”host” host必须要用引号括起来

注意:host可以是一个主机名也可以是具体的ip地址、网段等。

当host为主机名时:
#例如:
user1@"web1.redhat.org"

当host是ip地址或者网段时:
#例如:
tom@172.16.%.%
nacy@"192.168.1.%"
bob@"10.0.0.0/255.255.0.0"
创建用户:
create user "user_name"@"host"  [IDENTIFIED BY "password"]

注意:
host必须用引号括起来,user_name部分可以忽略引号

创建的用户默认只有登录数据库的权限。

创建用户的时候指定密码:create user user_name identified by “password”

修改用户名:
rename user old_name to new_name;
删除用户:
drop user "user_name"@"host"
修改用户密码:

注意

  • 新版mysql中用户密码可以保存在mysql.user表的authentication_string字段中

  • 如果mysql.user表的authentication_string和password字段都保存密码authentication_string优先生效

  • 使用update来操作表修改密码,需要使用FLUSH PRIVILEGES刷新权限才会生效

修改用户密码

文档:https://dev.mysql.com/doc/refman/5.7/en/set-password.html

5.6版本修改密码

mysql5.6的alter user命令只能用来修改用户密码的过期时间。

(1)update mysql.user set password=password("123456") where User="xxx" and Host = "xxx";

(2)set password for xxx@xxx = password("xxx");
5.7及以上版本

MySQL 5.7.6版本起,user表仅使用authentication_string列代替之前版本中的password列来存储密码

  • 使用没有的字符串 PASSWORD()
SET PASSWORD FOR "jeffrey"@"localhost" = "password";
  • 使用PASSWORD()函数(pawword()在 MySQL 5.7 中已弃用,在8.0删除了这个函数)
SET PASSWORD FOR "jeffrey"@"localhost" = PASSWORD("password");
  • 更改用户密码的首选语句:alter user
ALTER USER user IDENTIFIED BY "auth_string";
忘记管理员密码的解决办法:
  1. 启动mysqld进程时,为其使用如下选项:
--skip-grant-tables:不做权限和账号验证。

--skip-networking:禁止远程连接(空密码远程连接上去危险性大),自己能连上因为不走端口号,走的是socket文件
  1. 使用UPDATE命令修改管理员密码

  2. 关闭mysqld进程,移除上述两个选项,重启mysqld

范例:Mariadb 和MySQL5.6版之前激活成功教程root密码

#修改配置文件
[root@centos8 ~]#vim /etc/my.cnf
[mysqld]
skip-grant-tables
skip-networking

#重启mysql
[root@centos8 ~]#systemctl restart mysqld|mariadb

#进入MySQL修改root密码
[root@centos8 ~]#mysql #连接到MySQL
#方法1
#mariadb 旧版和MySQL5.6版之前
MariaDB [(none)]> update mysql.user set password=password("ubuntu") where user="root";

#mariadb 新版
MariaDB [(none)]> update mysql.user set authentication_string=password("ubuntu") where user="root";

#方法2
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> alter user root@"localhost" identified by "ubuntu";

#注释掉对应文件
[root@centos8 ~]#vim /etc/my.cnf
[mysqld]
#skip-grant-tables
#skip-networking

#重启mysql
[root@centos8 ~]#systemctl restart mysqld|mariadb

范例: MySQL5.7和8.0 激活成功教程root密码

#修改配置文件
[root@centos8 ~]#vim /etc/my.cnf
[mysqld]
skip-grant-tables 
skip-networking  #MySQL8.0不需要

#重启MySQL服务
[root@centos8 ~]#systemctl restart mysqld
#方法1
mysql> update mysql.user set authentication_string="" where user="root" and
host="localhost";

#方法2
mysql> flush privileges; #再执行下面任意一个命令
mysql> alter user root@"localhost" identified by "ubuntu";

#进入MySQL后修改root密码为新密码
mysql> set password for root@"localhost"="ubuntu";

#注释掉对应语句
[root@centos8 ~]#vim /etc/my.cnf
[mysqld]
#skip-grant-tables
#skip-networking

#重启mysql
[root@centos8 ~]#systemctl restart mysqld
更加简单激活成功教程密码的方法

停止数据库以后,删除掉mysql的所有数据。

重新启动数据库的时候就会重新初始化,相当于重装系统。
注意:测试环境测试。
权限管理和DCL语句

注意
新建用户的默认权限:USAGE,仅仅能登录数据库系统

权限分类

数据库、表、字段、管理类、程序类

  • 数据库:对数据库的相关操作权限

  • 表:针对表的相关操作

  • 管理类:查看数据库、创建用户等操作

  • 程序类:针对函数、存储过程、触发器等的操作

  • 所有权限:ALL PRIVILEGES 或 ALL

授权:grant .. to ..
grant 权限 on db.tb to user [WITH GRANT OPTION]

#*.*:表示所有数据库和所有表
#WITH GRANT OPTION:允许把自己的权限授权给别人

例如:

mysql> grant all on *.* to tom@"%";
Query OK, 0 rows affected (0.00 sec)

mysql> show grants for tom;
+------------------------------------------+
| Grants for tom@%                         |
+------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO "tom"@"%" |
+------------------------------------------+
1 row in set (0.00 sec)

在授权的时候创建用户(8.0已经删除这种语法)

grant privilege on db.tb to user identified by "password"

例如:

mysql> grant all on *.* to bob@"%" identified by "redhat";
Query OK, 0 rows affected, 1 warning (0.00 sec)
取消权限:revoke .. from ..
revoke privilege on db.tb for user

例如:

mysql> revoke all on *.* from bob@"%";
Query OK, 0 rows affected (0.00 sec)

mysql> show grants for bob@"%";
+---------------------------------+
| Grants for bob@%                |
+---------------------------------+
| GRANT USAGE ON *.* TO "bob"@"%" |
+---------------------------------+
1 row in set (0.00 sec)

查看指定用户的全权限:show grants for ..

例如:

mysql> show grants for tom@"%";
+---------------------------------+
| Grants for tom@%                |
+---------------------------------+
| GRANT USAGE ON *.* TO "tom"@"%" |
+---------------------------------+
1 row in set (0.00 sec)

原文地址:https://www.cnblogs.com/heyongshen/archive/2022/09/11/16675885.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/4782.html

(0)
上一篇 2023-06-05
下一篇 2023-06-05

相关推荐

  • NoSql非关系型数据库之MongoDB应用(一):安装MongoDB服务 – 熊泽「终于解决」

    NoSql非关系型数据库之MongoDB应用(一):安装MongoDB服务 – 熊泽「终于解决」业精于勤,荒于嬉;行成于思,毁于随。 一、MongoDB服务下载安装(windows环境安装) 1.进入官网:https://www.mongodb.com/,点击右上角的 Try Free , 2.

    2023-04-18
    161
  • clickhouse 预聚合_clickhouse入门

    clickhouse 预聚合_clickhouse入门上篇笔记讲到了聚合函数的实现并且带大家看了聚合函数是如何注册到ClickHouse之中的并被调用使用的。这篇笔记,笔者会续上上篇的内容,将剖析一把ClickHouse聚合流程的整体实现。 第二篇文章,

    2023-03-22
    148
  • 让你的代码循环运行Range函数

    让你的代码循环运行Range函数Range函数是Python内置的函数之一,它可用于生成一个整数序列。Range函数的三个参数分别为start、stop和step。

    2023-12-05
    111
  • Python导入包的多种方法

    Python导入包的多种方法
        Python是一种高级的、可扩展的、通用的脚本语言,广泛应用于人工智能、大数据、网络爬虫等多个领域,成为了日益热门的编程语言。Python的模块化和包管理的思想,让Python代码更加模块化和易于维护。在Python中,我们可以通过多种方式来导入包,满足不同的开发需求。在本文中,我们将详细介绍Python导入包的多种方法,以及它们的使用场景。

    2024-06-04
    61
  • Python安装教程

    Python安装教程随着人工智能技术的发展,Python已经成为最受欢迎的编程语言之一。Python语言简单易用,拥有丰富的库和工具,使得程序员可以快速地开发各种功能。本文将向大家介绍Python的安装方法,以便它们可以在自己的计算机上使用Python编程。

    2024-06-13
    58
  • 数据库设计案例[亲测有效]

    数据库设计案例[亲测有效]简单构建设计数据库

    2023-05-26
    151
  • Python使用os模块创建文件夹

    Python使用os模块创建文件夹随着计算机技术的飞速发展,Python作为一种高级编程语言,已经被广泛应用在各个领域。其中,应用文件系统的操作,是Python的一个重要的领域。而在这其中,使用os模块创建文件夹是一个十分常见的操作。

    2024-05-15
    74
  • MySQL之数据操纵语言(DML)[通俗易懂]

    MySQL之数据操纵语言(DML)[通俗易懂]数据操纵语言(DML) 数据操纵语(Data Manipulation Language),简称DML。 DML主要有四个常用功能。 增 删 改 查 insert delete update sele

    2023-04-16
    145

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注