Mysql之权限管理与备份和JDBC

181 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第8天,点击查看活动详情

用户管理

SQL命令操作

用户表:mysql.user

本质:对这张表进行增删改查

创建用户

--create user 用户名 indntified by '密码'
create user kuangshen indntified by '123456';

修改密码(当前用户)

set password = password('123456');

修改密码(指定用户)

set password for kuangshen = password('123456');

重命名

--rename user 原来的名字 to 新名字
rename user kuangshen to baba;

用户授权 all privileges 全部的权限,库.表

--all privileges 除了给别人授权,其他的都能做
grant all privileges on *.* to baba

查询权限(指定用户的)

show grants for baba;

root的权限

show grants for root@localhost

撤销权限

--revoke 哪些权限 on 哪个库 from 撤销谁
revoke all privileges on *.* from baba;

删除用户

drop user baba;

MySQL备份

为什么要备份:

  • 保证重要得到数据不丢失
  • 数据转移

MySQL 数据库备份的方式

  • 直接拷贝物理文件

  • 可视化工具中手动导出

  • 使用命令行导出 mysqldump 命令行使用

    #mysqldump -h主机 -u用户名 -p密码 数据库 表名 >物理磁盘位置/文件名
    mysqldump -hlocalhost -uroot -p123456 school student > D:/a.sql
    ​
    #mysqldump -h主机 -u用户名 -p密码 数据库 表1 表2 表3 >物理磁盘位置/文件名
    mysqldump -hlocalhost -uroot -p123456 scholl student >D:/b.sql
    ​
    #mysqldump -h 主机 -u 用户名 -p 密码 数据库 >物理磁盘位置/文件名
    mysqldump -hlocalhost -uroot -p123456 scholl student >D:/c.sql
    ​
    #导入
    #登录的情况下,切换到指定的数据库
    #source 备份文件
    source d:/a.sql
    ​
    mysql -u用户名 -p密码 库名< 备份文件
    

JDBC

为了简化开发人员对数据库的统一操作,提供了一个规范,即JDBC

这些规范的实现由具体的厂商去做,对于开发人员来说,我们只需要掌握JDBC接口的操作即可

第一个JDBC程序

1、创建一个项目

2、导入数据库驱动

3、编写测试代码

public class jdbcdemo {
    public static void main(String[] args) {
        //1.加载驱动
        Class.forName("com.mysql.jdbc.Driver"); //固定写法
        
        //2.用户信息和url
        //jdbc:mysql://主机地址:端口号/数据库名?参数1&参数2&参数3
        String url = "jdbc:mysql://localhost:3306/数据库名?userUnicode = true & characterEncoding = utf8 & useSSL = true";
        String username = "root";
        String password = "123456";
        
        //3.连接成功,数据库对象
        Connection connection = DriverManager.getConnection(url, username, password);
        
        //4.执行SQL的对象
        Statement statement = connection.createStatement();
        
        //5.执行SQL,可能存在结果,查看返回结果
        String sql = "SELECT * FROM users";
        
        ResultSet resultSet = statement.executeQuery(sql);
        //返回结果集,结果集中封装了全部的查询结果
        
        while (resultSet.next()) {
            System.out.println("id=" + resultSet.getObject(columnLabel:"id"));
            System.out.println("name=" + resultSet.getObject(columnLabel:"name"));
            System.out.println("pwd=" + resultSet.getObject(columnLabel:"pwd"));
            System.out.println("email=" + resultSet.getObject(columnLabel:"email"));
            System.out.println("birth=" + resultSet.getObject(columnLabel:"birthday"));
        }
        //6.释放连接
        resultSet.close();
        statement.close();
        connection.close();
    }
}

步骤总结:

  1. 加载驱动
  2. 连接数据库 DriverManager
  3. 获得执行sql的对象 Statement
  4. 获得返回的结果集
  5. 释放连接

DriverManager

//DriverManager.registerDriver(new com.mysql.jdbc.Driver());
Class.forName("com.mysql.jdbc.Driver"); //固定写法
Connection connection = DriverManager.getConnection(url, username, password);
​
//connection 代表数据库
//数据库设置自动提交
connection.setAutoCommit();
//事务提交
connection.commit();
//事务回滚
conncetin.rollback();

URL

String url = "jdbc:mysql://localhost:3306/数据库名?userUnicode = true & characterEncoding = utf8 & useSSL = true";
​
//mysql --3306
//协议 ://主机地址:端口号/数据库名?参数1&参数2&参数3//oralce --1521
//jdbc:oracle:thin:@localhost:1521:sid

Statement 执行SQL的对象 PrepareStatement 执行SQL的对象

statement.executeQuery(); //查询操作返回ResultSet
statement.execute(); //执行任何SQL
statement.executeUpdate(); //更新、插入、删除。返回一个受影响的行数

ResultSet 查询的结果集:封装了所有的查询结果

获得指定的数据类型

resultSet.getObject(); //在不知道列类型的情况下使用
//知道列类型
resultSet.getString();
resultSet.getInt();
resultSet.getFloat();
resultSet.getDate();
resultSet.getObject();

遍历,指针

resultSet.beforeFirst(); //移动到最前面
resultSet.afterLast(); //移动到最后面
resultSet.next(); //移动到下一个数据
resultSet.previous(); //移动到前一行
resultSet.absolute(row); //移动到指定行

释放资源

resultSet.close();
statement.close();
connection.close();