sql权限

MySQL / MariaDB

  • 创建账号
    1
    CREATE USER 'username'@'host' IDENTIFIED BY 'password';
  • 授权
    1
    2
    GRANT ALL PRIVILEGES ON mydb.* TO 'alice'@'localhost';
    FLUSH PRIVILEGES;
    mydb.*为数据库名称,授权整个数据库

PostgreSQL

  • 创建账号
    1
    CREATE USER username WITH PASSWORD 'password';
  • 授权
    1
    GRANT ALL PRIVILEGES ON DATABASE mydb TO alice;

SQL Server

  • 创建账号
    1
    2
    CREATE LOGIN username WITH PASSWORD = 'password';
    CREATE USER username FOR LOGIN username;

Oracle

  • 创建账号
    1
    CREATE USER username IDENTIFIED BY password;
  • 授权
    1
    GRANT CONNECT, RESOURCE TO alice;

数据库的导入导出

.sql逻辑备份文件

整库(含建表语句+数据)导出

直接导出(mariadb使用mariadb-dump)

记得如果-p后没有加密码,是隐藏输入的,第一行输入密码回显会污染文件,删除.sql文件中第一行即可

1
mysqldump -u 用户 -p --single-transaction --routines --triggers --events --hex-blob 库名 > bak.sql
  • —single-transaction 保证 InnoDB 一致性且不锁表(生产必备)
  • —routines 导出存储过程/函数
  • —hex-blob 防止二进制乱码

压缩导出(mariadb使用mariadb-dump)

1
mysqldump -u 用户 -p --single-transaction --routines --triggers --events --hex-blob 库名 | gzip > bak.sql.gz

检查备份,看头 20 行确认有建表语句

1
head -n 20 bak.sql

.sql逻辑备份文件导出导入

在需要导入的数据库中新建一个数据库,然后退出

1
2
create database 库名;
exit;

到备份文件目录下执行

1
mysql -u root -p 库名 < bak.sql

题外话:如果是mariadb备份文件导入mysql是支持的,只是有可能版本的排序规则不支持,MariaDB 10.10+ 新增的 Unicode 14.0 排序规则给mysql8.0的修改方法如下:

1
sed -i 's/utf8mb4_uca1400_ai_ci/utf8mb4_0900_ai_ci/g' bak.sql