mysql怎么访问用户B_MySQL访问控制和用户管理

访问控制

你需要给用户提供他们所需的访问权,且仅提供他们所需的访问权。这就是所谓的访问控制,管理访问控制需要创建和管理用户账号。

多数用户只需要对表进行读和写,但少数用户甚至需要能创建和删除表;

某些用户需要读表,但可能不需要更新表;

你可能想允许用户添加数据,但不允许他们删除数据;

某些用户(管理员)可能需要处理用户账号的权限,但多数用户不需要;

你可能想让用户通过存储过程访问数据,但不允许他们直接访问数据;

你可能想根据用户登录的地点限制对某些功能的访问。

不要使用root 应该严肃对待root登录的使用。仅在绝对需要时使用它(或许在你不能登录其他管理账号时使用)。不应该在日常的MySQL操作中使用root。

管理用户

mysql> USE mysql;

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A

Database changed

mysql> SELECT user FROM user;

+------------------+

| user |

+------------------+

| debian-sys-maint |

| mysql.infoschema |

| mysql.session |

| mysql.sys |

| root |

+------------------+

5 rows in set (0.00 sec)

mysql数据库有一个名为user的表,它包含所有用户账号。user表有一个名为user的列,它存储用户登录名。

创建用户账号

mysql> CREATE USER ben IDENTIFIED BY 'p@$$w0rd';

Query OK, 0 rows affected (0.06 sec)

CREATE USER创建一个新用户账号。在创建用户账号时不一定需要口令。

指定散列口令 IDENTIFIED BY指定的口令为纯文本,MySQL将在保存到user表之前对其进行加密。为了作为散列值指定口令,使用IDENTIFIED BY PASSWORD。

使用GRANT或INSERT GRANT语句(稍后介绍)也可以创建用户账号,但一般来说CREATE USER是最清楚和最简单的句子。此外,也可以通过直接插入行到user表来增加用户,不过为安全起见,一般不建议这样做。MySQL用来存储用户账号信息的表(以及表模式等)极为重要,对它们的任何毁坏都可能严重地伤害到MySQL服务器。因此,相对于直接处理来说,最好是用标记和函数来处理这些表。

重命名账户

mysql> RENAME USER ben TO bforta;

Query OK, 0 rows affected (0.01 sec)

MySQL 5之前 仅MySQL 5或之后的版本支持RENAME USER。为了在以前的MySQL中重命名一个用户,可使用UPDATE直接更新user表。

删除用户账号

mysql> DROP USER bforta;

Query OK, 0 rows affected (0.00 sec)

在MySQL 5以前,DROP USER只能用来删除用户账号,不能删除相关的权限。因此,如果使用旧版本的MySQL,需要先用REVOKE删除与账号相关的权限,然后再用DROP USER删除账号。

设置访问权限

SHOW GRANTS FOR username@localhost;

为看到赋予用户账号的权限,使用SHOW GRANTS FOR。

用户定义为user@host MySQL的权限用用户名和主机名结合定义。如果不指定主机名,则使用默认的主机名%(授予用户访问权限而不管主机名)。

为设置权限,使用GRANT语句。GRANT要求你至少给出以下信息:

要授予的权限;

被授予访问权限的数据库或表;

用户名。

GRANT SELECT ON crashcourse.* TO bforta;

此GRANT允许用户在crashcourse.*(crashcourse数据库的所有表)上使用SELECT。通过只授予SELECT访问权限,用户bforta对crashcourse数据库中的所有数据具有只读访问权限。

GRANT的反操作为REVOKE,用它来撤销特定的权限。

REVOKE SELECT ON crashcourse.* FROM bforta;

这条REVOKE语句取消刚赋予用户bforta的SELECT访问权限。被撤销的访问权限必须存在,否则会出错。

GRANT和REVOKE可在几个层次上控制访问权限:

整个服务器,使用GRANT ALL和REVOKE ALL;

整个数据库,使用ON database.*;

特定的表,使用ON database.table;

特定的列;

特定的存储过程。

列出可以授予或撤销的每个权限。

权 限

说 明

ALL

除GRANT OPTION外的所有权限

ALTER

使用ALTER TABLE

ALTER ROUTINE

使用ALTER PROCEDURE和DROP PROCEDURE

CREATE

使用CREATE TABLE

CREATE ROUTINE

使用CREATE PROCEDURE

CREATE TEMPORARY TABLES

使用CREATE TEMPORARY TABLE

CREATE USER

使用CREATE USER、DROP USER、RENAME USER和REVOKE ALL PRIVILEGES

CREATE VIEW

使用CREATE VIEW

DELETE

使用DELETE

DROP

使用DROP TABLE

EXECUTE

使用CALL和存储过程

FILE

使用SELECT INTO OUTFILE和LOAD DATA INFILE

GRANT OPTION

使用GRANT和REVOKE

INDEX

使用CREATE INDEX和DROP INDEX

INSERT

使用INSERT

LOCK TABLES

使用LOCK TABLES

PROCESS

使用SHOW FULL PROCESSLIST

RELOAD

使用FLUSH

REPLICATION CLIENT

服务器位置的访问

REPLICATION SLAVE

由复制从属使用

SELECT

使用SELECT

SHOW DATABASES

使用SHOW DATABASES

SHOW VIEW

使用SHOW CREATE VIEW

SHUTDOWN

使用mysqladmin shutdown(用来关闭MySQL)

SUPER

使用CHANGE MASTER、KILL、LOGS、PURGE、MASTER和SET GLOBAL。还允许mysqladmin调试登录

UPDATE

使用UPDATE

USAGE

无访问权限

未来的授权 在使用GRANT和REVOKE时,用户账号必须存在,但对所涉及的对象没有这个要求。这允许管理员在创建数据库和表之前设计和实现安全措施。这样做的副作用是,当某个数据库或表被删除时(用DROP语句),相关的访问权限仍然存在。而且,如果将来重新创建该数据库或表,这些权限仍然起作用。

简化多次授权 可通过列出各权限并用逗号分隔,将多条GRANT语句串在一起

更改口令

mysql> SET PASSWORD FOR bforta=PASSWORD ('P@ssW0rd');

Query OK, 0 rows affected (0.01 sec)

SET PASSWORD更新用户口令。新口令必须传递到Password()函数进行加密。

SET PASSWORD还可以用来设置你自己的口令

mysql> SET PASSWORD =PASSWORD ('P@ssW0rd');

Query OK, 0 rows affected (0.01 sec)

在不指定用户名时,SET PASSWORD更新当前登录用户的口令。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/305944.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

探索 .Net Core 的 SourceLink

介绍Source Link是一组软件包和一个规范, 它将一些元数据添加到PDB文件,以将本地文件重新映射到GitHub上的文件,因此Visual Studio可以在这需要时下载文件, 该项目的目的是可以为使用Nuget安装软件的用户提供源代码调试, Microsoft库&#xf…

mysql group by 范围_MySQL 按照范围/等级 进行Group By

我们要做一张报表表格,从mysql里取出数据,然后按等级分组,如何实现呢?MySQL 示例 SQL:SELECTftime,sum(cost) as cost,count(advertiser_id) as aduser_num,sum(pv) as pv,sum(vc) as vc,CASEWHEN cost>100000 THEN ‘1’WHEN …

「译」 用 Blazor WebAssembly 实现微前端

原文作者: Wael Kdouh原文链接:https://medium.com/waelkdouh/microfrontends-with-blazor-webassembly-b25e4ba3f325我聊下最近我在做的事情,然后分享下在Blazor WebAssembly 微前端的实现细节,这篇文章是我的一些心得,以及一个示…

ubuntu mysql集群搭建_ubuntu server部署mysql集群

简介[说明本次部署的内容,目的等等]本部署文档的目的是如何在ubuntu server上进行mysql的群集部署。前期准备在进行本文档操作前,需要完成如下前期步骤:1.安装3台ubuntu server服务器;Server1: ndbd 192.168.68.5Server2: ndbd 19…

使用 dotnet-monitor 分析.NET 应用程序

dotnet-monitor 是 .NET Core 命令行接口 (CLI) 工具, 可以很方便的在dotnet环境中分析我们的应用程序,需要注意的是,目前它还只是一个实验性的工具在这之前,我们使用的有 dotnet-counters,dotnet-dump 和 dotnet-trace&#xff0…

mysql数据库查看用户名_mysql怎么查看用户名?

我们在使用mysql的时候,有时候需要来查看当前用户。本篇文章将和大家讲述mysql怎么查看用户名,感兴趣的朋友可以了解一下。启动数据库:[rootserver ~]# mysqld_safe &[1] 3289[rootserver ~]# 130913 08:19:58 mysqld_safe Logging to /u…

如何实现 ASP.NET Core WebApi 的版本化

Web API 的版本化可以尽量保证在相同url情况下保留一个 api 的多个版本,通常一个 webapi 会有多个client,这些client包括:app,web,html5,crawl 等等同构或者异构的平台,当 api 升级之后&#xf…

mysql查询重复的名字_Mysql中like用法:查询名字中含有风字的学生信息

一、表名和字段–1. 学生表 student (s_id,s_name,s_birth,s_sex) –学生编号,学生姓名,出生年月,学生性别–2. 课程表 course (c_id,c_name,t_id) –课程编号,课程名称,教师编号–3. 教师表 teacher (t_id,t_name) –…

mysql单行数据64k_字段数据大于64K的解决方案 | 学步园

方法一:在SQL Server Management Studio配置 max text repl size 选项:1、在对象资源管理器中,右键单击服务器并选择“属性”。2、单击“高级”节点。3、在“杂项”下,将“最大文本复制大小”选项更改为所需的值。方法二&#xff…

一次Task.Run异常问题的排查

最近在测试一个功能代码时发现一个非常奇怪的问题,主要是Task.Run引起一些不符合逻辑的错误,以下针对这一问题排查的总结。问题代码可以建个控制台程序来运行以下代码class Program{static User user new User();static void Main(string[] args){for (…

git maven 一键部署_Jenkins Git Maven搭建自动化部署项目环境 邮件通知

简介折腾了两个晚上,趁着今晚比较有空,把jenkinsgitmaven搭建自动化部署项目环境搭建的过程记录一下,这里我把github作为git的远程仓库(https://github.com/jacky- lulu/cxf_demo-Maven-Webapp)系统:centos6.5maven: Apache Maven 3.3…

在.NET Core 中收集数据的几种方式

APM是一种应用性能监控工具,可以帮助理解系统行为, 用于分析性能问题的工具,以便发生故障的时候,能够快速定位和解决问题, 通过汇聚业务系统各处理环节的实时数据,分析业务系统各事务处理的交易路径和处理时间,实现对应…

改进你的代码-扩展了一下IEnumerableT

背景今天用EF写东西,觉得IEnumerable里面写where()条件老是写if判断很麻烦,这样:if (!string.IsNullOrWhiteSpace(key)){list list.Where(u > u.Name.Contains(key)).ToList();}if (!string.IsNullOrWhiteSpace(key)){list list.Where(u…

java 连接池连接mysql数据库需要哪些jar包_DBCP-基于Java8导入DBCP连接池所需JAR包并编写DBCPUtils工具类...

上述五个jar包缺一不可下载解压后,进入解压出的文件夹将这五个jar包复制出来放入自己创建的myJar文件夹中(myJar文件夹创建与说明)接下来就可以在工程中进行使用package utils;import com.mysql.cj.jdbc.Driver;import org.apache.commons.dbcp2.BasicDataSource;import java.s…

C# 在自定义的控制台输出重定向类中整合调用方信息

C# 在自定义的控制台输出重定向类中整合调用方信息目录C# 在自定义的控制台输出重定向类中整合调用方信息一、前言二、输出重定向基础版三、输出重定向进阶版(传递调用方信息)四、后记及资源独立观察员 2021 年 1 月 6 日一、前言众所周知,在…

mac 上mysql怎么卸载不了_mac的mysql怎么卸载?

Mac下卸载mysql的方法:1、关闭mysql查看mysql是否启动:ps -ef |grep mysql输入:kill -9 (./mysqld前面第二个数字,这里是627) 然后回车,关闭mysql。2、卸载:在Mac终端使用下面的命令删除所有mysql文件即可s…

C#实现网页加载后将页面截取成长图片

背景最近再做一个需求,需要对网页生成预览图,如下图但是网页千千万,总不能一个个打开,截图吧;于是想着能不能使用代码来实现网页的截图。其实要实现这个功能,无非就是要么实现一个仿真浏览器,要…

mysql 8 配置参数优化_mysql8 参考手册--配置非持久性优化器统计参数

本节介绍如何配置非持久性优化器统计信息。当innodb_stats_persistentOFF或使用创建或更改单个表时,Optimizer统计信息不会保留在磁盘 上 STATS_PERSISTENT0。相反,统计信息存储在内存中,并且在服务器关闭时会丢失。统计信息还可以通过某些操…

“既然计划没有变化快,那制订计划还有个卵用啊!”

这是头哥侃码的第229篇原创每年年初,我的朋友圈里都会炸出不少在打完鸡血之后,迫不及待向全世界宣告自己 “新年Flag” 的人。有的人,把健身、养生设为目标,什么不暴瘦20斤不换头像呀,什么再也不吃炸鸡啤酒啦&#xff…

图书管理系统jsp代码_【程序源代码】使用Java开发的图书管理系统

关键字:java 管理系统 正文 | 内容01—【概述】使用Java开发的图书管理系统,读者可以注册登录,登录时会判断账号类型再分别跳到各自对应的页面,读者可以查找,借阅,还书,查看历史借阅记录&#x…