mysql数据库用户和权限管理记录_MySQL
bitsCN.com 一、MySQL用户的基本说明: 1.1 用户的基本结构 ■用户名:16个字符以内 IP:192.168.0.1 网络地址:172.16.0.0/255.255.0.0 主机还支持通配符:%和_ 172.16.%.% %.111cn.net --skip-name-resolve 1.2 授权表: user: Contains user accounts, global privileges, and other non-privilege columns. db: Contains database-level privileges. host: Obsolete. tables_priv: Contains table-level privileges. columns_priv: Contains column-level privileges. procs_priv: Contains stored procedure and function privileges. proxies_priv: Contains proxy-user privileges. 1.3 各授权表的说明: FILE权限也仅在user表中指定。它不是管理性权限,但你在服务器主机上读或写文件的能力与你正在存取的数据库无关。 当mysqld服务器启动时,将授权表的内容读入到内存中。你可以通过FLUSH PRIVILEGES语句或执行mysqladmin flush-privileges或mysqladmin reload命令让它重新读取表。 二、MySQL提供的权限 GRANT和REVOKE语句所用的涉及权限的名称显示在下表,还有在授权表中每个权限的表列名称和每个权限有关的上下文。 权限 三、权限更改何时生效 当服务器注意到授权表被改变了时,现存的客户端连接有如下影响: ■表和列权限在客户端的下一次请求时生效。 如果你手动地修改授权表(使用INSERT、UPDATE或DELETE等等),你应该执行mysqladmin flush-privileges或mysqladmin reload告诉服务器再装载授权表,否则你的更改将不会生效,除非你重启服务器。 如果你直接更改了授权表但忘记重载,重启服务器后你的更改方生效。这样可能让你迷惑为什么你的更改没有什么变化!
四、MySQL用户账户管理 CREATE USER username@host [IDENTIFIED BY 'password'] mysql> CREATE USER barlow@'%' IDENTIFIED BY '123456'; GRANT priv_type[(column_list)] ON [object_type] priv_level TO username@'%' [IDENTIFIED BY [PASSWORD] 'password']; mysql> GRANT CREATE,INSERT,SELECT,UPDATE,DELETE ON testdb.* TO barlow@'%'; mysql> SHOW GRANTS FOR 'barlow'@'%';
4.3 用户管理 DROP USER 'username'@'host' RENAME USER old_name TO new_name REVOKE priv_type [(column_list)] [, priv_type [(column_list)]] ... ON [object_type] priv_level FROM user [, user] ... mysql> mysql> REVOKE INSERT ON testdb.* FROM barlow@'%';
4.3.4 修改用户密码: SET PASSWORD FOR 'user_name'@'host' = PASSWORD('new_password'); mysql> SET PASSWORD FOR 'barlow'@'%' = PASSWORD('987654'); 用户修改自己的密码语法(也可以使用上述语法修改): SET PASSWORD = PASSWORD('new_password');方法二:直接update mysql.user表的password字段实现修改密码:基本语法:mysql> use mysql mysql> UPDATE user SET Password = PASSWORD('new_password') WHERE User='user_name' AND Host='host'; mysql> FLUSH PRIVILEGES; mysql> use mysql Database changed mysql> UPDATE user SET Password = PASSWORD('redhat') WHERE User='barlow' AND Host='%'; Query OK, 1 row affected (0.03 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.08 sec) ■停止mysqld服务 停止服务,修改mysqld_safe传递参数: [root@localhost ~]# service mysqld stop Shutting down MySQL........ SUCCESS! [root@localhost ~]# vim /etc/init.d/mysqld
[root@localhost ~]# service mysqld start Starting MySQL....................... SUCCESS! [root@localhost ~]# mysql ##注意,这里已经不需要登录密码了 Welcome to the MySQL monitor. Commands end with ; or g. Your MySQL connection id is 1 Server version: 5.6.13 Source distribution Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or 'h' for help. Type 'c' to clear the current input statement. mysql> UPDATE mysql.user SET Password = PASSWORD('123456') WHERE User='root'; Query OK, 0 rows affected (0.00 sec) Rows matched: 3 Changed: 0 Warnings: 0 mysql> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.03 sec) [root@localhost ~]# service mysqld stop Shutting down MySQL........ SUCCESS! [root@localhost ~]# vim /etc/init.d/mysqld $bindir/mysqld_safe --datadir="$datadir" --pid-file="$mysqld_pid_file_path" $other_args >/dev/null 2>&1 & [root@localhost ~]# service mysqld start Starting MySQL...... SUCCESS! [root@localhost ~]# mysql ##再次登录,提示需要密码 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) [root@localhost ~]# mysql -u root –p ##使用新密码正常登录 Enter password: Welcome to the MySQL monitor. Commands end with ; or g. Your MySQL connection id is 2 Server version: 5.6.13 Source distribution Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or 'h' for help. Type 'c' to clear the current input statement. mysql>
|