mysql 用户设置访问权限 (命令篇)

mysql 用户设置访问权限 (命令篇)

周赒
2021-12-02 / 0 评论 / 95 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2022年01月16日,已超过1020天没有更新,若内容或图片失效,请留言反馈。

问题:

为了数据库的安全,设置特定用户访问数据库或者数据库表的权限?

解决方法:

1、新增数据库用户数据
方式1:
// 添加无限制访问用户以及密码
CREATE USER 'your_username'@'%' IDENTIFIED BY 'your_password';
// 添加本地访问用户以及密码
CREATE USER 'your_username'@'localhost' IDENTIFIED BY 'your_password';

 注:
  user 是用户的名称,host 设置用户连接的方式;host:% 表示无限制(允许任何主机)登录数据库;localhost 表示服务器本地登录数据库 指定ip 表示指定某个ip终端访问数据库。还有人把host 设置成127.0.0.1,与localhost类似,但是两个存在着明显区别。
  mysql -h 127.0.0.1 的时候,使用 TCP/IP 连接, mysql server 认为该连接来自于127.0.0.1或者是"localhost.localdomain"
  mysql -h localhost 的时候,是 不使用TCP/IP 连接的,而使用 Unix socket ;此时,mysql server则认为该client是来自"localhost"
  mysql权限管理中的"localhost"有特定含义:
  需要根据自己的环境设置成localhost 还是选择127.0.0.1 ; 这个我们后面再说明。

方式2:

  通过sql 写入mysql user 表中

INSERT INTO `mysql`.`user` (`Host`, `User`, `Select_priv`, `Insert_priv`, `Update_priv`, `Delete_priv`, `Create_priv`, `Drop_priv`, `Reload_priv`, `Shutdown_priv`, `Process_priv`, `File_priv`, `Grant_priv`, `References_priv`, `Index_priv`, `Alter_priv`, `Show_db_priv`, `Super_priv`, `Create_tmp_table_priv`, `Lock_tables_priv`, `Execute_priv`, `Repl_slave_priv`, `Repl_client_priv`, `Create_view_priv`, `Show_view_priv`, `Create_routine_priv`, `Alter_routine_priv`, `Create_user_priv`, `Event_priv`, `Trigger_priv`, `Create_tablespace_priv`, `ssl_type`, `ssl_cipher`, `x509_issuer`, `x509_subject`, `max_questions`, `max_updates`, `max_connections`, `max_user_connections`, `plugin`, `authentication_string`, `password_expired`, `password_last_changed`, `password_lifetime`, `account_locked`) VALUES ('%', 'testadmin', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', '', '', '', '', 0, 0, 0, 0, 'mysql_native_password', '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9', 'N', '2021-12-01 22:15:24', NULL, 'N');
2、用户授权(grant)
grant Alter, Create, Delete, Drop, INDEX, Insert, Select, Update  on `your_db_name`.* TO 'your_username'@'%';
// Alter, Create, Delete, Drop, INDEX, Insert, Select, Update  用户操作数据库或者数据库表的具体权限;
// `your_db_name`.* :表示`your_db_name`库下所有的表的权限都赋予 ; 
// `your_db_name`.table_name :表示`your_db_name`库下table_name表权限的赋予 ;

  或者 授予用户数据库表的全部权限 ,不需要一个个授予;如下:

grant All privileges  on `your_db_name`.* TO 'your_username'@'%';
// All privilege  :表示全部权限

  授予全部数据库表的全部权限 ,不需要一个个授予;如下:

grant All privileges  on *.* TO 'your_username'@'%';
// All privilege  :表示全部权限
mysql> grant all privileges on `apple_cms`.ac_actor TO 'testadmin'@'%';
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges; 
Query OK, 0 rows affected (0.00 sec)

  如图效果
mysql权限1

3、刷新MySQL的系统权限相关表,或者重启数据库服务
flush privileges;  // sql 命令
或者
systemctl restart mysql ;// linux 命令  不同版本linux 命令不同,根据自己服务器而定,切勿死记
4、撤销用户权限(REVOKE)
REVOKE privilege ON databasename.tablename FROM 'username'@'host';

注: 删除用户的对应的表或者库的权限

5、删除用户

  根据条件删除指定的用户

drop user your_name
DROP USER 'your_username'@'host';
DROP USER 'your_username'@'%';

综上就可以自己设置用户的访问操作权限 ,

0

评论 (0)

取消