当前位置: 首页 > article >正文

MYSQL----------MySQL权限管理

1 MySQL权限管理

  1. .1.1 权限系统的工作原理
    • 查看用户权限
    -- 查看用户的权限
    SHOW GRANTS FOR 'username'@'localhost';
    
    • 解释:这条SQL语句用于查看指定用户在本地主机上的权限。其中username是要查看权限的用户。
  2. .1.2 权限表的存取
    • 查询权限表(以user表为例)
    -- 查询MySQL用户权限表
    SELECT user, host, password, Select_priv, Insert_priv FROM mysql.user;
    
    • 解释:这条SQL语句从mysql.user表中查询用户、主机、密码以及选择和插入权限信息。mysql.user表存储了用户的权限相关信息。

2 账号管理

  • 创建用户
-- 创建新用户
CREATE USER 'new_user'@'localhost' IDENTIFIED BY 'password';
  • 解释:这条语句创建了一个名为new_user的用户,该用户只能从本地主机(localhost)登录,密码为password
  • 修改用户密码
-- 修改用户密码
SET PASSWORD FOR 'user'@'localhost' = PASSWORD('new_password');
  • 解释:此语句用于修改指定用户在本地主机上的密码。

3 MySQL安全问题

  1. 3.1 操作系统相关的安全问题
    • 确保MySQL数据目录的安全
    • 在Linux系统中,使用命令行设置权限
    chown -R mysql:mysql /var/lib/mysql
    chmod -R 700 /var/lib/mysql
    
    • 解释:第一条命令将/var/lib/mysql目录及其内容的所有者和所属组设置为mysql,第二条命令将权限设置为只有所有者有读、写和执行权限,防止其他用户访问数据目录。
  2. ** 数据库相关的安全问题**
    • 防止SQL注入(以简单的PHP和MySQL为例)
    • 在PHP中使用预处理语句
    <?php
    $mysqli = new mysqli("localhost", "user", "password", "database");
    $stmt = $mysqli->prepare("SELECT * FROM users WHERE username =? AND password =?");
    $username = "user_input_username";
    $password = "user_input_password";
    $stmt->bind_param("ss", $username, $password);
    $stmt->execute();
    $result = $stmt->get_result();
    while ($row = $result->fetch_assoc()) {
        // 处理结果
    }
    $stmt->close();
    $mysqli->close();
    
    
    • 解释:在PHP中,使用mysqli的预处理语句可以防止SQL注入。bind_param方法将用户输入作为参数绑定,而不是直接嵌入到SQL语句中。

其他安全设置选项

  1. 1 old - passwords
    • 设置old - passwords选项(在配置文件中)
    [mysqld]
    old - passwords=1
    
    • 解释:在my.cnfmy.ini配置文件的[mysqld]节中设置old - passwords选项。这可能会影响用户密码的存储方式。
  2. 2 safe - user - create
    • 在配置文件中启用safe - user - create
    [mysqld]
    safe - user - create = 1
    
    • 解释:在MySQL配置文件中设置safe - user - create选项为1,这有助于防止非管理员用户创建新用户。
  3. 3 secure - auth
    • 在配置文件中启用secure - auth
    [mysqld]
    secure - auth = 1
    
    • 解释:设置secure - auth选项为1可以增强用户认证的安全性,防止弱认证方式。
  4. 4 skip - grant - tables
    • 在配置文件中使用skip - grant - tables(仅用于紧急情况或测试)
    [mysqld]
    skip - grant - tables
    
    • 解释:在my.cnfmy.ini配置文件的[mysqld]节中设置skip - grant - tables选项。这将使MySQL启动时跳过权限表检查,但这在生产环境中是非常危险的,除非在紧急恢复或测试场景下。
  5. 5 skip - network
    • 在配置文件中启用skip - network(限制MySQL只在本地访问)
    [mysqld]
    skip - network
    
    • 解释:设置skip - network选项可以禁止MySQL接受网络连接,只允许本地访问,从而增强安全性。
  6. 6 skip - show - database
    • 在配置文件中启用skip - show - database
    [mysqld]
    skip - show - database = 1
    
    • 解释:设置skip - show - database选项为1可以防止非管理员用户查看数据库列表。
      在这里插入图片描述

http://www.kler.cn/a/472013.html

相关文章:

  • get和post有什么区别
  • 解决LNMP环境下PHP使用freetds扩展连接SqlServer数据库乱码问题
  • 现代谱估计的原理及MATLAB仿真(二)(AR模型法、MVDR法、MUSIC法)
  • 超市管理系统(javaweb+mysql+redis)
  • VSCode 使用鼠标滚轮控制字体
  • 【商城的功能开发】
  • Space Nation白皮书(区块链游戏)
  • 【iOS Swift Moya 最新请求网络框架封装通用】
  • centOS7
  • gitlab启动时gitaly报错网页访问503的解决方法
  • Go怎么实现面向对象编程
  • 测试用例的基本要素与设计方法详解
  • 《鸿蒙微内核与人工智能算法协同,开启智能系统新时代》
  • 机器学习是?
  • vue2 使用vue-color调色盘
  • echarts图折线图的一些修改,改变分割线颜色或者虚实,改变数据轴背景颜色渐变,改变折线图的圆点,折线图的平滑还是折直线
  • 【笔记】海康摄像头 SpringBoot 对接视频流播放
  • 欧几里得距离在权重矩阵中的物理意义
  • EXCEL: (二) 常用图表
  • 小程序组件 —— 29 组件案例 - 字体图标的使用