diff --git a/sql/CMakeLists.txt b/sql/CMakeLists.txt index 890b8ff8b8626..ecca723b9e463 100644 --- a/sql/CMakeLists.txt +++ b/sql/CMakeLists.txt @@ -448,12 +448,6 @@ IF(WIN32 AND TARGET mysqld AND NOT CMAKE_CROSSCOMPILING) ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/initdb.dep ) - INSTALL(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/data DESTINATION . - COMPONENT DataFiles - PATTERN "initdb.dep" EXCLUDE - PATTERN "bootstrap.sql" EXCLUDE - PATTERN "aria*" EXCLUDE - ) ELSE() # Not windows or cross compiling, just install an empty directory INSTALL(FILES ${DUMMY_FILE} DESTINATION data/mysql COMPONENT DataFiles) diff --git a/sql/mysql_install_db.cc b/sql/mysql_install_db.cc index 718e49969e098..93a3b54bdc218 100644 --- a/sql/mysql_install_db.cc +++ b/sql/mysql_install_db.cc @@ -39,7 +39,8 @@ struct IUnknown; extern "C" const char* mysql_bootstrap_sql[]; -char default_os_user[]= "NT AUTHORITY\\NetworkService"; +static char default_os_user[]= "NT AUTHORITY\\NetworkService"; +static char default_datadir[MAX_PATH]; static int create_db_instance(); static uint opt_silent; static char datadir_buffer[FN_REFLEN]; @@ -169,8 +170,27 @@ int main(int argc, char **argv) exit(error); if (!opt_datadir) { - my_print_help(my_long_options); - die("parameter --datadir=# is mandatory"); + /* + Figure out default data directory. It "data" directory, next to "bin" directory, where + mysql_install_db.exe resides. + */ + strcpy(default_datadir, self_name); + p = strrchr(default_datadir, FN_LIBCHAR); + if (p) + { + *p= 0; + p= strrchr(default_datadir, FN_LIBCHAR); + if (p) + *p= 0; + } + if (!p) + { + die("--datadir option not provided, and default datadir not found"); + my_print_help(my_long_options); + } + strncat(default_datadir, "\\data", sizeof(default_datadir)); + opt_datadir= default_datadir; + printf("Default data directory is %s\n",opt_datadir); } /* Print some help on errors */