router: rc: mysql.c: optimize code, clean-up

arm-ng
pedro 6 years ago
parent 0fce047fd6
commit 7ef479643d

@ -21,226 +21,241 @@ void start_mysql(void)
char full_datadir[256], full_tmpdir[256], basedir[256]; char full_datadir[256], full_tmpdir[256], basedir[256];
char tmp1[256], tmp2[256]; char tmp1[256], tmp2[256];
// make sure its really stop /* make sure its really stop */
stop_mysql(); stop_mysql();
//only if enable...
if( !nvram_match( "mysql_enable", "1" ) ) return;
if (nvram_match( "mysql_binary", "internal" ) ) /* only if enabled... */
{ if (!nvram_match("mysql_enable", "1")) return;
strcpy(pbi,"/usr/bin");
if (nvram_match( "mysql_binary", "internal")) {
strcpy(pbi, "/usr/bin");
} }
else if (nvram_match( "mysql_binary", "optware" ) ) else if (nvram_match("mysql_binary", "optware")) {
{ strcpy(pbi, "/opt/bin");
strcpy(pbi,"/opt/bin");
} }
else else {
{ strcpy(pbi, nvram_safe_get("mysql_binary_custom"));
strcpy(pbi,nvram_safe_get( "mysql_binary_custom" ));
} }
if(pbi[strlen(pbi)-1] =='/') pbi[strlen(pbi) - 1] ='\0';
if (pbi[strlen(pbi)-1] =='/') pbi[strlen(pbi) - 1] ='\0';
splitpath(pbi, basedir, tmp1); splitpath(pbi, basedir, tmp1);
/* Generate download saved path based on USB partition (mysql_dlroot) and directory name (mysql_datadir) */ /* Generate download saved path based on USB partition (mysql_dlroot) and directory name (mysql_datadir) */
if (nvram_match("mysql_usb_enable", "1")) if (nvram_match("mysql_usb_enable", "1")) {
{
tmp1[0] = 0; tmp1[0] = 0;
tmp2[0] = 0; tmp2[0] = 0;
strcpy(tmp1,nvram_safe_get("mysql_dlroot")); strcpy(tmp1,nvram_safe_get("mysql_dlroot"));
trimstr(tmp1); trimstr(tmp1);
if ( tmp1[0] != '/') if (tmp1[0] != '/') {
{
sprintf(tmp2, "/%s", tmp1); sprintf(tmp2, "/%s", tmp1);
strcpy(tmp1,tmp2); strcpy(tmp1,tmp2);
} }
strcpy(ppr, tmp1); strcpy(ppr, tmp1);
if(ppr[strlen(ppr)-1] == '/') if (ppr[strlen(ppr)-1] == '/') {
{
ppr[strlen(ppr)-1] = 0; ppr[strlen(ppr)-1] = 0;
} }
if(strlen(ppr) == 0) if (strlen(ppr) == 0) {
{ syslog(LOG_ERR, "Found no mounted USB partition. You must mount a USB disk first.");
syslog(LOG_ERR, "Found no mounted USB partition. You must mount a USB disk first." );
return; return;
} }
} }
else else {
{
ppr[0] = '\0'; ppr[0] = '\0';
} }
strcpy(pdatadir, nvram_safe_get("mysql_datadir")); strcpy(pdatadir, nvram_safe_get("mysql_datadir"));
trimstr(pdatadir); trimstr(pdatadir);
if(pdatadir[strlen(pdatadir)-1] == '/') if (pdatadir[strlen(pdatadir)-1] == '/') {
{
pdatadir[strlen(pdatadir)-1] = 0; pdatadir[strlen(pdatadir)-1] = 0;
} }
if(strlen(pdatadir) == 0) if (strlen(pdatadir) == 0) {
{
strcpy (pdatadir, "data"); strcpy (pdatadir, "data");
nvram_set("mysql_dir","data"); nvram_set("mysql_dir", "data");
} }
if(pdatadir[0] == '/') if (pdatadir[0] == '/') {
{ sprintf(full_datadir, "%s%s", ppr, pdatadir);
sprintf(full_datadir,"%s%s",ppr,pdatadir);
} }
else else {
{ sprintf(full_datadir, "%s/%s", ppr, pdatadir);
sprintf(full_datadir,"%s/%s",ppr,pdatadir);
} }
strcpy(ptmpdir, nvram_safe_get("mysql_tmpdir")); strcpy(ptmpdir, nvram_safe_get("mysql_tmpdir"));
trimstr(ptmpdir); trimstr(ptmpdir);
if(ptmpdir[strlen(ptmpdir)-1] == '/') if (ptmpdir[strlen(ptmpdir)-1] == '/') {
{
ptmpdir[strlen(ptmpdir)-1] = 0; ptmpdir[strlen(ptmpdir)-1] = 0;
} }
if(strlen(ptmpdir) == 0) if (strlen(ptmpdir) == 0) {
{
strcpy (ptmpdir, "tmp"); strcpy (ptmpdir, "tmp");
nvram_set("mysql_tmpdir","tmp"); nvram_set("mysql_tmpdir", "tmp");
} }
if(ptmpdir[0] == '/') if (ptmpdir[0] == '/') {
{ sprintf(full_tmpdir, "%s%s", ppr, ptmpdir);
sprintf(full_tmpdir,"%s%s",ppr,ptmpdir);
} }
else else {
{ sprintf(full_tmpdir, "%s/%s", ppr, ptmpdir);
sprintf(full_tmpdir,"%s/%s",ppr,ptmpdir);
} }
// config file /etc/my.cnf /* config file /etc/my.cnf */
if( !( fp = fopen( "/etc/my.cnf", "w" ) ) ) if (!(fp = fopen("/etc/my.cnf", "w"))) {
{ syslog(LOG_ERR, "Can not open /etc/my.cnf for writing.");
syslog(LOG_ERR, "Can not open /etc/my.cnf for writing." );
return; return;
} }
fprintf(fp, "[client]\n"); fprintf(fp,
fprintf(fp, "port = %s\n", nvram_safe_get("mysql_port")); "[client]\n"
fprintf(fp, "socket = /var/run/mysqld.sock\n\n"); "port = %s\n"
fprintf(fp, "[mysqld]\n"); "socket = /var/run/mysqld.sock\n\n"
fprintf(fp, "user = root\n"); "[mysqld]\n"
fprintf(fp, "socket = /var/run/mysqld.sock\n"); "user = root\n"
fprintf(fp, "port = %s\n", nvram_safe_get("mysql_port")); "socket = /var/run/mysqld.sock\n"
fprintf(fp, "basedir = %s\n\n", basedir); "port = %s\n"
fprintf(fp, "datadir = %s\n", full_datadir); "basedir = %s\n\n"
fprintf(fp, "tmpdir = %s\n\n", full_tmpdir); "datadir = %s\n"
fprintf(fp, "skip-external-locking\n"); "tmpdir = %s\n\n"
if (nvram_match("mysql_allow_anyhost", "1")) fprintf(fp, "bind-address = 0.0.0.0\n"); "skip-external-locking\n",
else fprintf(fp, "bind-address = 127.0.0.1\n"); nvram_safe_get("mysql_port"),
fprintf(fp, "key_buffer_size = %sM\n", nvram_safe_get("mysql_key_buffer")); nvram_safe_get("mysql_port"),
fprintf(fp, "max_allowed_packet = %sM\n", nvram_safe_get("mysql_max_allowed_packet")); basedir,
fprintf(fp, "thread_stack = %sK\n", nvram_safe_get("mysql_thread_stack")); full_datadir,
fprintf(fp, "thread_cache_size = %s\n\n", nvram_safe_get("mysql_thread_cache_size")); full_tmpdir);
fprintf(fp, "table_open_cache = %s\n", nvram_safe_get("mysql_table_open_cache"));
fprintf(fp, "sort_buffer_size = %sK\n", nvram_safe_get("mysql_sort_buffer_size")); if (nvram_match("mysql_allow_anyhost", "1"))
fprintf(fp, "read_buffer_size = %sK\n", nvram_safe_get("mysql_read_buffer_size")); fprintf(fp, "bind-address = 0.0.0.0\n");
fprintf(fp, "read_rnd_buffer_size = %sK\n", nvram_safe_get("mysql_read_rnd_buffer_size")); else
fprintf(fp, "query_cache_size = %sM\n", nvram_safe_get("mysql_query_cache_size")); fprintf(fp, "bind-address = 127.0.0.1\n");
fprintf(fp, "max_connections = %s\n", nvram_safe_get("mysql_max_connections"));
fprintf(fp, "#The following items are from mysql_server_custom\n"); fprintf(fp,
fprintf(fp, "%s\n", nvram_safe_get("mysql_server_custom")); "key_buffer_size = %sM\n"
fprintf(fp, "#end of mysql_server_custom\n\n"); "max_allowed_packet = %sM\n"
fprintf(fp, "[mysqldump]\n"); "thread_stack = %sK\n"
fprintf(fp, "quick\nquote-names\n"); "thread_cache_size = %s\n\n"
fprintf(fp, "max_allowed_packet = 16M\n"); "table_open_cache = %s\n"
fprintf(fp, "[mysql]\n\n"); "sort_buffer_size = %sK\n"
fprintf(fp, "[isamchk]\n"); "read_buffer_size = %sK\n"
fprintf(fp, "key_buffer_size = 8M\n"); "read_rnd_buffer_size = %sK\n"
fprintf(fp, "sort_buffer_size = 8M\n"); "query_cache_size = %sM\n"
fprintf(fp, "\n"); "max_connections = %s\n"
"#The following items are from mysql_server_custom\n"
"%s\n"
"#end of mysql_server_custom\n\n"
"[mysqldump]\n"
"quick\nquote-names\n"
"max_allowed_packet = 16M\n"
"[mysql]\n\n"
"[isamchk]\n"
"key_buffer_size = 8M\n"
"sort_buffer_size = 8M\n\n",
nvram_safe_get("mysql_key_buffer"),
nvram_safe_get("mysql_max_allowed_packet"),
nvram_safe_get("mysql_thread_stack"),
nvram_safe_get("mysql_thread_cache_size"),
nvram_safe_get("mysql_table_open_cache"),
nvram_safe_get("mysql_sort_buffer_size"),
nvram_safe_get("mysql_read_buffer_size"),
nvram_safe_get("mysql_read_rnd_buffer_size"),
nvram_safe_get("mysql_query_cache_size"),
nvram_safe_get("mysql_max_connections"),
nvram_safe_get("mysql_server_custom"));
fclose(fp); fclose(fp);
//start file /* start file */
if( !( fp = fopen( "/tmp/start_mysql.sh", "w" ) ) ) if(!(fp = fopen( "/tmp/start_mysql.sh", "w"))) {
{ syslog(LOG_ERR, "Can not open /tmp/start_mysql.sh for writing.");
syslog(LOG_ERR, "Can not open /tmp/start_mysql.sh for writing." );
return; return;
} }
fprintf( fp, "#!/bin/sh\n\n" );
fprintf( fp, "BINPATH=%s\n", pbi); fprintf(fp,
fprintf( fp, "PID=/var/run/mysqld.pid\n"); "#!/bin/sh\n\n"
fprintf( fp, "NEW_INSTALL=0\n"); "BINPATH=%s\n"
fprintf( fp, "MYLOG=/var/log/mysql.log\n"); "PID=/var/run/mysqld.pid\n"
fprintf( fp, "ROOTNAME=`nvram get mysql_username`\n"); "NEW_INSTALL=0\n"
fprintf( fp, "ROOTPASS=`nvram get mysql_passwd`\n"); "MYLOG=/var/log/mysql.log\n"
fprintf( fp, "NGINX_DOCROOT=`nvram get nginx_docroot`\n"); "ROOTNAME=`nvram get mysql_username`\n"
fprintf( fp, "ANYHOST=`nvram get mysql_allow_anyhost`\n"); "ROOTPASS=`nvram get mysql_passwd`\n"
fprintf( fp, "alias elog=\"logger -t mysql -s\"\n"); "NGINX_DOCROOT=`nvram get nginx_docroot`\n"
fprintf( fp, "sleep %s\n", nvram_safe_get( "mysql_sleep" ) ); "ANYHOST=`nvram get mysql_allow_anyhost`\n"
fprintf( fp, "rm -f $MYLOG\n"); "alias elog=\"logger -t mysql -s\"\n"
fprintf( fp, "touch $MYLOG\n"); "sleep %s\n"
fprintf( fp, "if [ ! -d \"%s\" ]; then\n", full_datadir); "rm -f $MYLOG\n"
fprintf( fp, " elog \"datadir in /etc/my.cnf doesn't exist. Creating ...\"\n"); "touch $MYLOG\n"
fprintf( fp, " mkdir -p %s\n", full_datadir); "if [ ! -d \"%s\" ]; then\n"
fprintf( fp, " if [ -d \"%s\" ]; then\n", full_datadir); " elog \"datadir in /etc/my.cnf doesn't exist. Creating ...\"\n"
fprintf( fp, " elog \"Created successfully.\"\n"); " mkdir -p %s\n"
fprintf( fp, " else\n"); " if [ -d \"%s\" ]; then\n"
fprintf( fp, " elog \"Created failed. exit.\"\n"); " elog \"Created successfully.\"\n"
fprintf( fp, " exit 1\n"); " else\n"
fprintf( fp, " fi\n"); " elog \"Created failed. exit.\"\n"
fprintf( fp, "fi\n"); " exit 1\n"
fprintf( fp, "if [ ! -d \"%s\" ]; then\n", full_tmpdir); " fi\n"
fprintf( fp, " elog \"tmpdir in /etc/my.cnf doesn't exist. creating ...\"\n"); "fi\n"
fprintf( fp, " mkdir -p %s\n", full_tmpdir); "if [ ! -d \"%s\" ]; then\n"
fprintf( fp, " if [ -d \"%s\" ]; then\n", full_tmpdir); " elog \"tmpdir in /etc/my.cnf doesn't exist. creating ...\"\n"
fprintf( fp, " elog \"Created successfully.\"\n"); " mkdir -p %s\n"
fprintf( fp, " else\n"); " if [ -d \"%s\" ]; then\n"
fprintf( fp, " elog \"Created failed. exit.\"\n"); " elog \"Created successfully.\"\n"
fprintf( fp, " exit 1\n"); " else\n"
fprintf( fp, " fi\n"); " elog \"Created failed. exit.\"\n"
fprintf( fp, "fi\n"); " exit 1\n"
fprintf( fp, "if [ ! -f \"%s/mysql/tables_priv.MYD\" ]; then\n", full_datadir); " fi\n"
fprintf( fp, " NEW_INSTALL=1\n"); "fi\n"
fprintf( fp, " echo \"=========Found NO tables_priv.MYD====================\" >> $MYLOG\n"); "if [ ! -f \"%s/mysql/tables_priv.MYD\" ]; then\n"
fprintf( fp, " echo \"This is new installed MySQL.\" >> $MYLOG\n"); " NEW_INSTALL=1\n"
fprintf( fp, "fi\n"); " echo \"=========Found NO tables_priv.MYD====================\" >> $MYLOG\n"
fprintf( fp, "REINIT_PRIV_TABLES=`nvram get mysql_init_priv`\n"); " echo \"This is new installed MySQL.\" >> $MYLOG\n"
fprintf( fp, "if [[ $REINIT_PRIV_TABLES -eq 1 || $NEW_INSTALL -eq 1 ]]; then\n"); "fi\n"
fprintf( fp, " echo \"=========mysql_install_db====================\" >> $MYLOG\n"); "REINIT_PRIV_TABLES=`nvram get mysql_init_priv`\n"
fprintf( fp, " $BINPATH/mysql_install_db --user=root --force >> $MYLOG 2>&1\n"); "if [[ $REINIT_PRIV_TABLES -eq 1 || $NEW_INSTALL -eq 1 ]]; then\n"
fprintf( fp, " elog \"Privileges table was already initialized.\"\n"); " echo \"=========mysql_install_db====================\" >> $MYLOG\n"
fprintf( fp, " nvram set mysql_init_priv=0\n"); " $BINPATH/mysql_install_db --user=root --force >> $MYLOG 2>&1\n"
fprintf( fp, " nvram commit\n"); " elog \"Privileges table was already initialized.\"\n"
fprintf( fp, "fi\n"); " nvram set mysql_init_priv=0\n"
fprintf( fp, "REINIT_ROOT_PASSWD=`nvram get mysql_init_rootpass`\n"); " nvram commit\n"
fprintf( fp, "if [[ $REINIT_ROOT_PASSWD -eq 1 || $NEW_INSTALL -eq 1 ]]; then\n"); "fi\n"
fprintf( fp, " echo \"=========mysqld skip-grant-tables==================\" >> $MYLOG\n"); "REINIT_ROOT_PASSWD=`nvram get mysql_init_rootpass`\n"
fprintf( fp, " nohup $BINPATH/mysqld --skip-grant-tables --skip-networking --pid-file=$PID >> $MYLOG 2>&1 &\n"); "if [[ $REINIT_ROOT_PASSWD -eq 1 || $NEW_INSTALL -eq 1 ]]; then\n"
fprintf( fp, " sleep 2\n"); " echo \"=========mysqld skip-grant-tables==================\" >> $MYLOG\n"
fprintf( fp, " [ -f /tmp/setpasswd.sql ] && rm -f /tmp/setpasswd.sql\n"); " nohup $BINPATH/mysqld --skip-grant-tables --skip-networking --pid-file=$PID >> $MYLOG 2>&1 &\n"
fprintf( fp, " echo \"use mysql;\" > /tmp/setpasswd.sql\n"); " sleep 2\n"
fprintf( fp, " echo \"update user set password=password('$ROOTPASS') where user='root';\" >> /tmp/setpasswd.sql\n"); " [ -f /tmp/setpasswd.sql ] && rm -f /tmp/setpasswd.sql\n"
fprintf( fp, " echo \"flush privileges;\" >> /tmp/setpasswd.sql\n"); " echo \"use mysql;\" > /tmp/setpasswd.sql\n"
fprintf( fp, " echo \"=========mysql < /tmp/setpasswd.sql====================\" >> $MYLOG\n"); " echo \"update user set password=password('$ROOTPASS') where user='root';\" >> /tmp/setpasswd.sql\n"
fprintf( fp, " $BINPATH/mysql < /tmp/setpasswd.sql >> $MYLOG 2>&1\n"); " echo \"flush privileges;\" >> /tmp/setpasswd.sql\n"
fprintf( fp, " echo \"=========mysqldadmin shutdown====================\" >> $MYLOG\n"); " echo \"=========mysql < /tmp/setpasswd.sql====================\" >> $MYLOG\n"
fprintf( fp, " $BINPATH/mysqladmin -uroot -p\"$ROOTPASS\" --shutdown_timeout=3 shutdown >> $MYLOG 2>&1\n"); " $BINPATH/mysql < /tmp/setpasswd.sql >> $MYLOG 2>&1\n"
fprintf( fp, " killall mysqld\n"); " echo \"=========mysqldadmin shutdown====================\" >> $MYLOG\n"
fprintf( fp, " rm -f $PID /tmp/setpasswd.sql\n"); " $BINPATH/mysqladmin -uroot -p\"$ROOTPASS\" --shutdown_timeout=3 shutdown >> $MYLOG 2>&1\n"
fprintf( fp, " nvram set mysql_init_rootpass=0\n"); " killall mysqld\n"
fprintf( fp, " nvram commit\n"); " rm -f $PID /tmp/setpasswd.sql\n"
fprintf( fp, " elog \"root password was already re-initialized.\"\n"); " nvram set mysql_init_rootpass=0\n"
fprintf( fp, "fi\n"); " nvram commit\n"
fprintf( fp, "\n"); " elog \"root password was already re-initialized.\"\n"
fprintf( fp, "echo \"=========mysqld startup====================\" >> $MYLOG\n"); "fi\n\n"
fprintf( fp, "nohup $BINPATH/mysqld --pid-file=$PID >> $MYLOG 2>&1 &\n"); "echo \"=========mysqld startup====================\" >> $MYLOG\n"
fprintf( fp, "if [ $ANYHOST -eq 1 ]; then\n"); "nohup $BINPATH/mysqld --pid-file=$PID >> $MYLOG 2>&1 &\n"
fprintf( fp, " sleep 3\n"); "if [ $ANYHOST -eq 1 ]; then\n"
fprintf( fp, " [ -f /tmp/setanyhost.sql ] && rm -f /tmp/setanyhost.sql\n"); " sleep 3\n"
fprintf( fp, " echo \"GRANT ALL PRIVILEGES ON *.* TO 'root'@'%%' WITH GRANT OPTION;\" >> /tmp/setanyhost.sql\n"); " [ -f /tmp/setanyhost.sql ] && rm -f /tmp/setanyhost.sql\n"
fprintf( fp, " echo \"flush privileges;\" >> /tmp/setanyhost.sql\n"); " echo \"GRANT ALL PRIVILEGES ON *.* TO 'root'@'%%' WITH GRANT OPTION;\" >> /tmp/setanyhost.sql\n"
fprintf( fp, " echo \"=========mysql < /tmp/setanyhost.sql====================\" >> $MYLOG\n"); " echo \"flush privileges;\" >> /tmp/setanyhost.sql\n"
fprintf( fp, " $BINPATH/mysql -uroot -p\"$ROOTPASS\" < /tmp/setanyhost.sql >> $MYLOG 2>&1\n"); " echo \"=========mysql < /tmp/setanyhost.sql====================\" >> $MYLOG\n"
fprintf( fp, "fi\n"); " $BINPATH/mysql -uroot -p\"$ROOTPASS\" < /tmp/setanyhost.sql >> $MYLOG 2>&1\n"
fprintf( fp, "/usr/bin/mycheck addcru\n"); "fi\n"
fprintf( fp, "elog \"MySQL successfully started.\"\n"); "/usr/bin/mycheck addcru\n"
fprintf( fp, "mkdir -p $NGINX_DOCROOT\n"); "elog \"MySQL successfully started.\"\n"
fprintf( fp, "cp -p /www/adminer.php $NGINX_DOCROOT/\n"); "mkdir -p $NGINX_DOCROOT\n"
"cp -p /www/adminer.php $NGINX_DOCROOT/\n",
pbi,
nvram_safe_get("mysql_sleep"),
full_datadir,
full_datadir,
full_datadir,
full_tmpdir,
full_tmpdir,
full_tmpdir,
full_datadir);
fclose( fp ); fclose( fp );
chmod( "/tmp/start_mysql.sh", 0755 ); chmod("/tmp/start_mysql.sh", 0755);
xstart( "/tmp/start_mysql.sh" ); xstart("/tmp/start_mysql.sh");
return; return;
} }
@ -250,37 +265,36 @@ void stop_mysql(void)
FILE *fp; FILE *fp;
char pbi[128]; char pbi[128];
if (nvram_match( "mysql_binary", "internal" ) ) if (nvram_match("mysql_binary", "internal")) {
{
strcpy(pbi,"/usr/bin"); strcpy(pbi,"/usr/bin");
} }
else if (nvram_match( "mysql_binary", "optware" ) ) else if (nvram_match("mysql_binary", "optware")) {
{
strcpy(pbi,"/opt/bin"); strcpy(pbi,"/opt/bin");
} }
else else {
{ strcpy(pbi,nvram_safe_get("mysql_binary_custom"));
strcpy(pbi,nvram_safe_get( "mysql_binary_custom" ));
} }
//stop file
if( !( fp = fopen( "/tmp/stop_mysql.sh", "w" ) ) ) /* stop file */
{ if (!(fp = fopen("/tmp/stop_mysql.sh", "w"))) {
syslog(LOG_ERR, "Can not open /tmp/stop_mysql.sh for writing." ); syslog(LOG_ERR, "Can not open /tmp/stop_mysql.sh for writing.");
return; return;
} }
fprintf( fp, "#!/bin/sh\n\n" ); fprintf(fp,
fprintf( fp, "%s/mysqladmin -uroot -p\"%s\" --shutdown_timeout=3 shutdown\n", pbi, nvram_safe_get("mysql_passwd")); "#!/bin/sh\n\n"
fprintf( fp, "killall mysqld\n" ); "%s/mysqladmin -uroot -p\"%s\" --shutdown_timeout=3 shutdown\n"
fprintf( fp, "logger \"MySQL successfully stopped\" \n"); "killall mysqld\n"
fprintf( fp, "sleep 1\n"); "logger \"MySQL successfully stopped\" \n"
fprintf( fp, "rm -f /var/run/mysql.pid\n"); "sleep 1\n"
fprintf( fp, "/usr/bin/mycheck addcru\n"); "rm -f /var/run/mysql.pid\n"
"/usr/bin/mycheck addcru\n",
pbi,
nvram_safe_get("mysql_passwd"));
fclose(fp);
fclose( fp ); chmod("/tmp/stop_mysql.sh", 0755);
chmod( "/tmp/stop_mysql.sh", 0755 );
xstart( "/tmp/stop_mysql.sh" ); xstart("/tmp/stop_mysql.sh");
return; return;
} }

Loading…
Cancel
Save