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 行确认有建表语句
.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
|