热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

MySQL存取权限系统_MySQL

1.MySQL用户名和口令*MySQL使用于认证目的的用户名,与Unix用户名(登录名字)或Windows用户名无关。缺省地,大多数MySQL客户尝试使用当前Unix用户名作为MySQL用户名登录,但是这仅仅为了方便,客户程序允许用-u或--user选项指定一个不同的名字。及与安全的考虑,所
  1. MySQL 用户名和口令
  * MySQL使用于认证目的的用户名,与Unix用户名(登录名字)或Windows用户名无关。缺省地,大多数MySQL客户尝试使用当前Unix用户名作为MySQL用户名登录,但是这仅仅为了方便,客户程序允许用-u或--user选项指定一个不同的名字。及与安全的考虑,所有的MySQL用户名都应该有口令。
  * MySQL用户名最长可以是16各字符;典型地,Unix用户名限制为8个字符。
  * MySQL口令与Unix口令没关系。
  * MySQL加密口令使用了一个Unix登录期间所用的不同算法,PASSWORD()和ENCRYPT()
  函数PASSWORD(str)
  从纯文本口令str计算一个口令字符串。该函数被用于为了在user授权表的Password列中存储口令而加密MySQL口令。
  mysql> select PASSWORD('badpwd');
  -> '7f84554057dd964b'
  PASSWORD()加密是非可逆的。PASSWORD()不以与Unix口令加密的相同的方法执行口令加密。你不应该假定如果你的Unix 口令和你的MySQL口令是一样的,PASSWORD()将导致与在Unix口令文件存储的相同的加密值。见ENCRYPT()。
  ENCRYPT(str[,salt])
  使用Unix crypt()系统调用加密str。salt参数应该是一个有2个字符的字符串。(MySQL 3.22.16中,salt可以长于2个字符。)
  mysql> select ENCRYPT("hello");
  -> 'VxuFAJXVARROc'
  如果crypt()在你的系统上不可用,ENCRYPT()总是返回NULL。ENCRYPT()只保留str起始8个字符而忽略所有其他,至少在某些系统上是这样。这将由底层的crypt()系统调用的行为决定。
  1. 与MySQL服务器连接
  语法格式:
  shell> mysql [-h host_name][-u user_name][-pyour_pass ]
  -h, -u和-p选项的另一种形式是--host=host_name、--user=user_name和--password=your_pass。
  注意:在-p或--password=与跟随它后面的口令之间没有空格。(在命令行上指定一个口令是不安全的!)
  对于命令行没有的联接参数,mysql使用缺省值:
  * 缺省主机名是localhost。
  * 缺省用户名是你的Unix登录名。
  * 如果没有-p,则没有提供口令。
  缺省值参数的指定:
  在你的主目录下“.my.cnf”的配置文件的[client]小节里指定连接参数:
  [client]
  host=host_name
  user=user_name
  password=your_pass
  注:命令行上被指定的值优先于在配置文件和环境变量中指定的值
  最安全的方法是让客户程序提示口令或在一个适当保护的“.my.cnf”文件中指定口令。
  1. MySQL提供的权限
  权限   列   上下文
  select Select_priv 表
  insert Insert_priv 表
  update Update_priv 表
  delete Delete_priv 表
  index Index_priv 表
  alter Alter_priv 表
  create Create_priv 数据库、表或索引
  drop Drop_priv 数据库或表
  grant Grant_priv 数据库或表
  references References_priv 数据库或表
  reload Reload_priv 服务器管理
  shutdown Shutdown_priv 服务器管理
  process Process_priv 服务器管理
  file File_priv 在服务器上的文件存取
  注:grant权限允许你把你自己拥有的那些权限授给其他的用户。
  file权限给予你用LOAD DATA INFILE和SELECT ... INTO OUTFILE语句读和写服务器上的文件,任何被授予这个权限的用户都能读或写MySQL服务器能读或写的任何文件。
  2. 存取控制:连接证实
  身份检查使用user表3个(Host, User和Password)范围字段。服务器只有在一个user表条目匹配你的主机名和用户名并且你提供了正确的口令时才接受连接。
  注:一个Host值可以是主机名或一个IP数字,或'localhost'指出本地主机。 可以在Host字段里使用通配符字符“%”和“_”。 Host值'%'匹配任何主机名。当一个连接被尝试时,服务器浏览排序的条目并使用找到的第一个匹配。
  普遍的误解是认为,对一个给定的用户名,当服务器试图对连接寻找匹配时,明确命名那个用户的所有条目将首先被使用。这明显不是事实。
  3. 存取控制:请求证实
  一旦你建立了一个连接,服务器进入阶段2。对在此连接上进来的每个请求,服务器检查你是否有足够的权限来执行它,授权表用GRANT和REVOKE命令操作。
  GRANT priv_type [(column_list)] [, priv_type [(column_list)] ...]
  ON {tbl_name | * | *.* | db_name.*}
  TO user_name [IDENTIFIED BY 'password']
  [, user_name [IDENTIFIED BY 'password'] ...]
  [WITH GRANT OPTION]
  REVOKE priv_type [(column_list)] [, priv_type [(column_list)] ...]
  ON {tbl_name | * | *.* | db_name.*}
  FROM user_name [, user_name ...]
  GRANT在MySQL 3.22.11或以后版本中实现。对于更早MySQL版本,GRANT语句不做任何事情。
  GRANT和REVOKE命令允许系统主管在4个权限级别上授权和撤回赋予MySQL用户的权利:
  全局级别
  全局权限作用于一个给定服务器上的所有数据库。这些权限存储在mysql.user表中。
  数据库级别
  数据库权限作用于一个给定数据库的所有表。这些权限存储在mysql.db和mysql.host表中。
  表级别
  表权限作用于一个给定表的所有列。这些权限存储在mysql.tables_priv表中。
  列级别
  列权限作用于在一个给定表的单个列。这些权限存储在mysql.columns_priv表中。
  user表权限是超级用户权限。只把user表的权限授予超级用户如服务器或数据库主管是明智的。对其他用户,你应该把在user表中的权限设成'N'并且仅在一个特定数据库的基础上授权, 使用db和host表。
  4. 权限更改何时生效
  当mysqld启动时,所有的授权表内容被读进存储器并且从那点生效。
  用GRANT、REVOKE或SET PASSWORD对授权表施行的修改会立即被服务器注意到。
  如果你手工地修改授权表(使用INSERT、UPDATE等等),你应该执行一个FLUSH PRIVILEGES语句或运行mysqladmin flush-privileges告诉服务器再装载授权表,否则你的改变将不生效,除非你重启服务器。
  5. 建立初始的MySQL权限
  在安装MySQL后,你通过运行scripts/mysql_install_db安装初始的存取权限。包含下列权限集合:
  * MySQL root用户作为可做任何事情的一个超级用户。连接必须由本地主机发出。注意:出世的root口令是空的,因此任何人能以root而没有一个口令进行连接并且被授予所有权限。
  * 一个匿名用户,他可对有一个'test'或以'test_'开始的名字的数据库做任何时期事情,连接必须由本地主机发出。这意味着任何本地用户能连接并且视为匿名用户。
  * 其他权限被拒绝。例如,一般用户不能使用mysqladmin shutdown或mysqladmin processlist。
  为MySQL root用户指定一个口令(注意,你使用PASSWORD()函数指定口令):
  shell> mysql -u root mysql
  mysql> UPDATE user SET Password=PASSWORD('new_password')
  WHERE user='root';
  mysql> FLUSH PRIVILEGES;
  在MySQL 3.22和以上版本中,你可以使用SET PASSWORD语句:
  shell> mysql -u root mysql
  mysql> SET PASSWORD FOR root=PASSWORD('new_password');
  设置口令的另一种方法是使用mysqladmin命令:
  shell> mysqladmin -u root password new_password
  看看scripts/mysql_install_db脚本,看它如何安装缺省的权限。你可用它作为一个研究如何增加其他用户的基础
  为了完全重建权限表,删除在包含mysql数据库的目录下所有“*.frm”,“*.MYI”和“*.MYD”文件。(这是在数据库目录下面命名为“mysql”的目录,当你运行mysqld --help时,它被列出。)然后运行mysql_install_db脚本,可能在首先编辑它拥有你想要的权限之后。
  1. 向MySQL增加新用户权限
  增加用户2个不同的方法:
  通过使用GRANT语句或通过直接操作MySQL授权表。
  比较好的方法是使用GRANT语句,因为他们是更简明并且好像错误少些。
  shell> mysql --user=root mysql
  mysql> GRANT ALL PRIVILEGES ON *.* TO monty@localhost
  IDENTIFIED BY 'something' WITH GRANT OPTION;
  mysql> GRANT ALL PRIVILEGES ON *.* TO monty@"%"
  IDENTIFIED BY 'something' WITH GRANT OPTION;
  mysql> GRANT RELOAD,PROCESS ON *.* TO admin@localhost;
  mysql> GRANT USAGE ON *.* TO dummy@localhost;
  monty
  可以从任何地方连接服务器的一个完全的超级用户,但是必须使用一个口令('something'做这个。注意,我们必须对monty@localhost和monty@"%"发出GRANT语句。如果我们增加localhost条目,对localhost的匿名用户条目在我们从本地主机连接接时由mysql_install_db创建的条目将优先考虑,因为它有更特定的Host字段值,所以以user表排列顺序看更早到来。
  admin
  可以从localhost没有一个口令进行连接并且被授予reload和process管理权限的用户。这允许用户执行mysqladmin reload、mysqladmin refresh和mysqladmin flush-*命令,还有mysqladmin processlist。没有授予数据库有关的权限。他们能在以后通过发出另一个GRANT语句授权。
  dummy
  可以不用一个口令连接的一个用户,但是只能从本地主机。全局权限被设置为'N'--USAGE权限类型允许你无需权限就可设置一个用户。它假定你将在以后授予数据库相关的权限。
  也可以直接通过发出INSERT语句增加同样的用户存取信息,然后告诉服务器再次装入授权表:
  shell> mysql --user=root mysql
  mysql> INSERT INTO user VALUES('localhost','monty',PASSWORD('something'),
  'Y','Y','Y
推荐阅读
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 禁止程序接收鼠标事件的工具_VNC Viewer for Mac(远程桌面工具)免费版
    VNCViewerforMac是一款运行在Mac平台上的远程桌面工具,vncviewermac版可以帮助您使用Mac的键盘和鼠标来控制远程计算机,操作简 ... [详细]
  • 生成对抗式网络GAN及其衍生CGAN、DCGAN、WGAN、LSGAN、BEGAN介绍
    一、GAN原理介绍学习GAN的第一篇论文当然由是IanGoodfellow于2014年发表的GenerativeAdversarialNetworks(论文下载链接arxiv:[h ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 无线认证设置故障排除方法及注意事项
    本文介绍了解决无线认证设置故障的方法和注意事项,包括检查无线路由器工作状态、关闭手机休眠状态下的网络设置、重启路由器、更改认证类型、恢复出厂设置和手机网络设置等。通过这些方法,可以解决无线认证设置可能出现的问题,确保无线网络正常连接和上网。同时,还提供了一些注意事项,以便用户在进行无线认证设置时能够正确操作。 ... [详细]
  • 本文详细介绍了相机防抖的设置方法和使用技巧,包括索尼防抖设置、VR和Stabilizer档位的选择、机身菜单设置等。同时解释了相机防抖的原理,包括电子防抖和光学防抖的区别,以及它们对画质细节的影响。此外,还提到了一些运动相机的防抖方法,如大疆的Osmo Action的Rock Steady技术。通过本文,你将更好地理解相机防抖的重要性和使用技巧,提高拍摄体验。 ... [详细]
author-avatar
mobiledu2502879733
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有