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