知识大全 MySQL 存取权限系统
Posted 权限
篇首语:没有理想,那些所谓的奋斗都是空话。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 MySQL 存取权限系统相关的知识,希望对你有一定的参考价值。
MySQL 存取权限系统 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
MySQL 用户名和口令 * MySQL使用于认证目的的用户名 与Unix用户名(登录名字)或Windows用户名无关 缺省地 大多数MySQL客户尝试使用当前Unix用户名作为MySQL用户名登录 但是这仅仅为了方便 客户程序允许用 u或 user选项指定一个不同的名字 及与安全的考虑 所有的MySQL用户名都应该有口令 * MySQL用户名最长可以是 各字符 典型地 Unix用户名限制为 个字符 * MySQL口令与Unix口令没关系 * MySQL加密口令使用了一个Unix登录期间所用的不同算法 PASSWORD()和ENCRYPT() 函数PASSWORD(str) 从纯文本口令str计算一个口令字符串 该函数被用于为了在user授权表的Password列中存储口令而加密MySQL口令 mysql> select PASSWORD( badpwd ); > f dd b PASSWORD()加密是非可逆的 PASSWORD()不以与Unix口令加密的相同的方法执行口令加密 你不应该假定如果你的Unix 口令和你的MySQL口令是一样的 PASSWORD()将导致与在Unix口令文件存储的相同的加密值 见ENCRYPT() ENCRYPT(str[ salt]) 使用Unix crypt()系统调用加密str salt参数应该是一个有 个字符的字符串 (MySQL 中 salt可以长于 个字符 ) mysql> select ENCRYPT( hello ); > VxuFAJXVARROc 如果crypt()在你的系统上不可用 ENCRYPT()总是返回NULL ENCRYPT()只保留str起始 个字符而忽略所有其他 至少在某些系统上是这样 这将由底层的crypt()系统调用的行为决定 与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 则没有提供口令 缺省值参数的指定 在你的主目录下 f 的配置文件的[client]小节里指定连接参数 [client] host=host_name user=user_name password=your_pass 注 命令行上被指定的值优先于在配置文件和环境变量中指定的值 最安全的方法是让客户程序提示口令或在一个适当保护的 f 文件中指定口令 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服务器能读或写的任何文件 存取控制 连接证实 身份检查使用user表 个(Host User和Password)范围字段 服务器只有在一个user表条目匹配你的主机名和用户名并且你提供了正确的口令时才接受连接 注 一个Host值可以是主机名或一个IP数字 或 localhost 指出本地主机 可以在Host字段里使用通配符字符 % 和 _ Host值 % 匹配任何主机名 当一个连接被尝试时 服务器浏览排序的条目并使用找到的第一个匹配 普遍的误解是认为 对一个给定的用户名 当服务器试图对连接寻找匹配时 明确命名那个用户的所有条目将首先被使用 这明显不是事实 存取控制 请求证实 一旦你建立了一个连接 服务器进入阶段 对在此连接上进来的每个请求 服务器检查你是否有足够的权限来执行它 授权表用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 或以后版本中实现 对于更早MySQL版本 GRANT语句不做任何事情 GRANT和REVOKE命令允许系统主管在 个权限级别上授权和撤回赋予MySQL用户的权利 全局级别 全局权限作用于一个给定服务器上的所有数据库 这些权限存储在mysql user表中 数据库级别 数据库权限作用于一个给定数据库的所有表 这些权限存储在mysql db和mysql host表中 表级别 表权限作用于一个给定表的所有列 这些权限存储在mysql tables_priv表中 列级别 列权限作用于在一个给定表的单个列 这些权限存储在lumns_priv表中 user表权限是超级用户权限 只把user表的权限授予超级用户如服务器或数据库主管是明智的 对其他用户 你应该把在user表中的权限设成 N 并且仅在一个特定数据库的基础上授权 使用db和host表 权限更改何时生效 当mysqld启动时 所有的授权表内容被读进存储器并且从那点生效 用GRANT REVOKE或SET PASSWORD对授权表施行的修改会立即被服务器注意到 如果你手工地修改授权表(使用INSERT UPDATE等等) 你应该执行一个FLUSH PRIVILEGES语句或运行mysqladmin flush privileges告诉服务器再装载授权表 否则你的改变将不生效 除非你重启服务器 建立初始的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 和以上版本中 你可以使用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脚本 可能在首先编辑它拥有你想要的权限之后 向MySQL增加新用户权限 增加用户 个不同的方法 通过使用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 cha138/Article/program/MySQL/201311/29392相关参考
知识大全 通过 Perl 存取 mSQL 和 MySQL 的内容
通过Perl存取mSQL和MySQL的内容 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! )知识
MySQL的重要语法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一帐号与权限 &n
mysql以后采用了新的验证方法所以导致一些程序不能正常使用我们可以使用old_password()函数使mysql继续使用旧的验证方式 比如我们建立一个admin的用户拥有全部权限密码gran
关于控制系统检修的权限设置检查,下列说法正确的是()A、各操作员站、工程师站和其它功能站的用户权限设置,必须与设计相符B、各网络接口站或网关的用户权限设置,应符合管理和安全要求C、各网络接口站或网关的
关于控制系统检修的权限设置检查,下列说法正确的是()A、各操作员站、工程师站和其它功能站的用户权限设置,必须与设计相符B、各网络接口站或网关的用户权限设置,应符合管理和安全要求C、各网络接口站或网关的
@access 使用范围classfunctionvardefinemodule 该标记用于指明关键字的存取权限privatepublic或proteced @author 指明作者 @
MySQL中文参考手册---MySQL文件系统 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 这
二锅头 1.不同的出入口,应能设置不同的出入权限,包括出入时间权限、出入口权限、出入次数权限、出入方向权限、出入目标标识信息及载体权限。 2.设置的控制点及控制措施须确保在发生火警紧急情况下不
二锅头 1.不同的出入口,应能设置不同的出入权限,包括出入时间权限、出入口权限、出入次数权限、出入方向权限、出入目标标识信息及载体权限。 2.设置的控制点及控制措施须确保在发生火警紧急情况下不
实现业务系统中的用户权限管理设计篇 B/S系统中的权限比C/S中的更显的重要C/S系统因为具有特殊的客户端所以访问用户的权限检测可以通过客户端实现或通过客户端+服务器检测实现而B/S中浏览器是每