2013-03-15 23 views
9

quando sto invocando il mysql_secure_installation file di errore sto ottenendo comemysql_secure_installation "Impossibile connettersi al server MySQL locale tramite presa"

[[email protected] bin]$ ./mysql_secure_installation 
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL 
     SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY! 


In order to log into MySQL to secure it, we'll need the current 
password for the root user. If you've just installed MySQL, and 
you haven't set the root password yet, the password will be blank, 
so you should just press enter here. 

Enter current password for root (enter for none): 
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) 
Enter current password for root (enter for none): 

ma il file calzino data nel file my.cnf è/home/mysqk123 /tmp/mysql.sock e sto usando rehhat linux 5.3 e mysql 5.1.47

So che le attività eseguite dallo script mysql_secure_installation possono essere eseguite manualmente, ma qui devo eseguire lo script [non è permesso eseguire l'operazione manualmente]

qualsiasi suggerimento s per risolvere il problema sono molto utili per me

risposta

14

Dal momento che questa utilità è pensato per essere utilizzato su un'installazione standard, e perché sembra accettare nessun parametro, vedo poche opzioni:

  • temporaneamente configurare MySQL utilizza la posizione socket predefinita per il tempo della procedura (in alternativa, un collegamento simbolico dalla posizione predefinita alla posizione personalizzata potrebbe funzionare).
  • modificare lo script mysql_secure_installation in modo che utilizzi la posizione personalizzata. Se ho capito bene, lo script crea un file di configurazione temporaneo come ./.my.cnf.$$ ($$ è il pid) intorno alla riga 46 nella subroutine make_config.

Modificare come segue: (disclaimer: non testato :)

make_config() { 
    echo "# mysql_secure_installation config file" >$config 
    echo "[mysql]" >>$config 
    echo "user=root" >>$config 
    echo "password='$rootpass'" >>$config 
    # add the line below 
    echo "socket=/home/mysqk123/tmp/mysql.sock" >>$config 
} 

Ancora una volta, questo script è pensato per essere utilizzato su uno standard, out-of-the installazione scatola. Spiega al tuo capo (o al tuo cliente) che se sei stato in grado di configurare MySQL per utilizzare una posizione socket non standard, puoi anche eseguire a mano comandi semplici come l'eliminazione degli account e l'impostazione delle password.

+0

grazie proprio lavorando – vidyadhar

+0

sei genio :) –

+0

partire da MySQL 5.7.2, 'mysql_secure_installation.sh' sarà sostituito da un binario che accetta le opzioni sulla riga di comando, in particolare ['--socket = path'] (http://dev.mysql.com/doc/refman/5.7/en/mysql-secure-installation.html).Non l'ho ancora provato, ma aggiornerò la risposta quando ne saprò di più. – RandomSeed

4

E 'possibile fare un link simbolico al file socket e quindi rimuoverlo:

ln -s /home/mysqk123/tmp/mysql.sock /var/lib/mysql/mysql.sock 
mysql_secure_installation # Do your stuff 
rm -rf /var/lib/mysql/mysql.sock 
1

ho avuto accadere questo stesso errore, e si scopre che avevo arrestato il servizio MySQL e dimenticato di riavviarlo. Quindi si consiglia di verificare lo stato del servizio mysql usando un comando come:

mysqladmin -u root -p status

Se si ottiene un errore, significa MySQL non è in esecuzione, e si può avviare il servizio MySQL. O, se si preferisce, è possibile incautamente tentare di avviare il servizio senza aver prima consultato il suo stato (che non funziona se è già in esecuzione) utilizzando uno di questi comandi:

/etc/init.d/mysql start 
service mysql start 

Sostituire mysqld con mysqld se il sistema sta usando quella versione di MySQL.

2

Assicurarsi che si avvia MySQL o MariaDB, ad esempio:

sudo systemctl start mariadb.service 
sudo systemctl enable mariadb.service 
Problemi correlati