MySQL导入导出

1.select into outfile导出

mysql> select * from tb_route_rule  into outfile '/home/ocssm/usm/mysqldata-8.0.16/tmp/tb_route_rule.sql' fields terminated by '|' lines terminated by '\r\n';
ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement

查看变量:

mysql> show global variables like '%secure%';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| secure_auth      | ON    |
| **secure_file_priv | NULL**  |
+------------------+-------+
2 rows in set (0.00 sec)

secure_file_priv为null 表示不允许导入导出
secure_file_priv指定文件夹时,表示mysql的导入导出只能发生在指定的文件夹
secure_file_priv没有设置时,则表示没有任何限制

可在配置文件my.cnf中指定secure-file-priv路径,指定路径后导入导出的文件只能存放与该文件夹下:
secure_file_priv路径
修改配置后需重启mysql生效。

2.mysqlimport导入

select into outfile导出的文件,可使用mysqlimport进行还原。

[test@test tmp]$/home/ocssp/data/mysql-8.0.16/bin/mysqlimport -h 100.00.00.100 -P 3307 -u usm -pusm usmdb /home/ocssp/data/mysqldata-8.0.16/tmp/user_test.sql --fields-terminated-by='|'
[test@test tmp]$mysqlimport: Error: 1227 Access denied; you need (at least one of) the SUPER, SYSTEM_VARIABLES_ADMIN or SESSION_VARIABLES_ADMIN privilege(s) for this operation

查看用户超级权限:

mysql> select host,user,Grant_priv,Super_priv from user;
+--------------+------------------+------------+------------+
| host         | user             | Grant_priv | Super_priv |
+--------------+------------------+------------+------------+
| %            | usm              | N          | N          |
| 100.00.00.100 | repl             | N          | N          |
| localhost    | mysql.infoschema | N          | N          |
| localhost    | mysql.session    | N          | Y          |
| localhost    | mysql.sys        | N          | N          |
| localhost    | root             | Y          | Y          |
+--------------+------------------+------------+------------+
6 rows in set (0.00 sec)

修改用户超级权限:

mysql>update mysql.user set Super_priv='Y' where user='usm';
mysql>flush privileges;
mysql>
mysql> select host,user,Grant_priv,Super_priv from user;
+--------------+------------------+------------+------------+
| host         | user             | Grant_priv | Super_priv |
+--------------+------------------+------------+------------+
| %            | usm              | N          | Y          |
| 100.00.00.100 | repl             | N          | N          |
| localhost    | mysql.infoschema | N          | N          |
| localhost    | mysql.session    | N          | Y          |
| localhost    | mysql.sys        | N          | N          |
| localhost    | root             | Y          | Y          |
+--------------+------------------+------------+------------+
6 rows in set (0.00 sec)

再次导入:

[test@test tmp]$mysqlimport: Error: 1045, Access denied for user 'usm'@'%' (using password: YES), when using table: user_test

mysqlimport是LOAD DATA INFILE语句的命令行界面,为此您需要’FILE’特权(服务器级别)。
授予FILE特权*.*:

mysql>GRANT ALL PRIVILEGES ON *.* TO 'usm'@'%';
mysql>GRANT FILE ON *.* to 'usm'@'%';
mysql>flush privileges;

导入成功:

[ocssm@ocssm_psp1 tmp]$usmdb.user_test: Records: 30  Deleted: 0  Skipped: 0  Warnings: 0

3.mysqldump 导出

[test@test tmp]$ /home/ocssm/usm/mysql-5.6.36/bin/mysqldump -uusm -p usmdb tb_route_rule > /home/ocssm/usm/mysqldata-8.0.16/tmp/tb_route_rule.sql
Enter password: 
mysqldump: Got error: 2002: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) when trying to connect

加入socket参数(可通过ps -ef|grep mysql查看sock文件路径,一般存放于MySQL的tmp文件夹下):

[test@test tmp]$ /home/ocssm/usm/mysql-5.6.36/bin/mysqldump --socket=/data/home/ocssm/mysql/tmp/mysql.sock -uusm -p usmdb tb_route_rule > /home/ocssm/usm/mysqldata-8.0.16/tmp/tb_route_rule.sql
Enter password: 
mysqldump: Got error: 1045: Access denied for user 'usm'@'localhost' (using password: YES) when trying to connect

加入-h主机IP:

[test@test tmp]$ /home/ocssm/usm/mysql-5.6.36/bin/mysqldump --socket=/data/home/ocssm/mysql/tmp/mysql.sock -h 100.00.00.100 -uusm -p usmdb tb_route_rule > /home/ocssm/usm/mysqldata-8.0.16/tmp/tb_route_rule.sql
Enter password: 
[test@test tmp]$
[test@test tmp]$ ls -ltr /home/ocssm/usm/mysqldata-8.0.16/tmp/tb_route_rule.sql
-rw-r----- 1 ocssm ocssm 0 Nov  7 16:57 /home/ocssm/usm/mysqldata-8.0.16/tmp/tb_route_rule.sql

导出成功,该备份文件包含drop table、create table 语句,引用该文件还原数据时,将删除原表、重新建表导入。
登录数据库后,使用source导入备份数据:

mysql> source /home/ocssm/usm/mysqldata-8.0.16/tmp/tb_route_rule.sql;

学习探索中,错漏之处请指正。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL中的导入导出可以使用mysqldump命令进行操作。根据提供的引用内容,可以通过以下方式进行导入导出操作: - 导出所有表以及数据可以使用以下命令: ``` mysqldump -h localhost -u root -p test > G:\arcgisworkspace\zypdoc\test.sql ``` - 导出所有表的表结构不含数据,加-d可以使用以下命令: ``` mysqldump -h localhost -u root -p -d test > G:\arcgisworkspace\zypdoc\test.sql ``` - 导出某张表的表结构不含数据可以使用以下命令: ``` mysqldump -h localhost -u root -p -d test pollution > G:\arcgisworkspace\zypdoc\test.sql ``` - 导出某张表的表结构和数据,不加-d可以使用以下命令: ``` mysqldump -h localhost -u root -p test pollution > G:\arcgisworkspace\zypdoc\test.sql ``` - 备份多个数据库可以使用以下命令: ``` mysqldump -h localhost -u root -p --databases test bank > G:\arcgisworkspace\zypdoc\test.sql ``` - 导入数据可以使用以下命令: ``` mysql -h localhost -u root -p test < G:\arcgisworkspace\zypdoc\test.sql ``` 以上是一些常用的导入导出操作的示例,你可以根据具体的需求来选择相应的命令进行操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [mysql导入导出命令详细总结,看这一篇就够了](https://blog.csdn.net/weixin_45299340/article/details/121380058)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值