今天在用CentOS7里在docker启动MySQL运行sql脚本文件时出错,错误信息如下:
mysql> source /home/mydatabase.sql; ERROR: Failed to open file '/home/mydatabase.sql', error: 2
上网查了下,错误原因应该是路径匹配的问题,默认路径是MySQL的安装路径下,所以MySQL只能访问到它源目录下的所有目录和文件,解决方式是在登录时直接指定要运行的sql脚本文件,具体步骤如下:
- 先登录一下MySQL,创建好要用到的数据库,我创建的数据库名称是mydatabase1
root@4994c041aa3a: mysql -uroot -p Enter password: Welcome to the MySQL monitor. Commands end with ; or g. Your MySQL connection id is 7 Server version: 5.7.36 MySQL Community Server (GPL) Copyright (c) 2000, 2021, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or 'h' for help. Type 'c' to clear the current input statement. mysql> create database mydatabase1;
- 退出MySQL,用运行sql脚本文件的方式重新登录
# 这里的mydatabase1就是第一步创建好的数据库,'<'后面的文件就是要运行的sql脚本文件路径 root@4994c041aa3a: mysql -uroot -p mydatabase1 < /home/mydatabase.sql
- 重新登录进去后发现文件已运行成功
root@4994c041aa3a: mysql -uroot -p Enter password: Welcome to the MySQL monitor. Commands end with ; or g. Your MySQL connection id is 7 Server version: 5.7.36 MySQL Community Server (GPL) Copyright (c) 2000, 2021, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or 'h' for help. Type 'c' to clear the current input statement. mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | mydatabase1 | | sys | +--------------------+ 5 rows in set (0.00 sec) mysql> use mydatabase1; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> show tables; +-----------------------------+ | Tables_in_mydatabase1 | +-----------------------------+ | t_disk | | t_crl | | t_menu | | t_user | +-----------------------------+ 4 rows in set (0.00 sec)
补充:
# CentOS7下docker启动MySQL命令 docker pull mysql:5.7 docker run -tid --name mysql -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 mysql:5.7 docker exec -it mysql /bin/bash mysql -uroot -p Enter password:



