/ / mysqldump sa nemôže pripojiť pomocou socket - mysql, bash, ubuntu, mysqldump

mysqldump sa nemôže pripojiť pomocou socket - mysql, bash, ubuntu, mysqldump

Tento problém bol niekoľko hodín v mojom mozgu. Snažil som sa použiť mysqldump na výpis databázy pomocou:

mysqldump --protocol=socket -S /var/run/mysqld/mysqld.sock database`

Stále však dostávam:

1045: Access denied for user "root"@"localhost" (using password: NO) when trying to connect

Som na localhost a beží pod root (sudo su).
Root @ localhost je povolená v tabuľke používateľov mysql.
Môžem použiť > mysql zobraziť všetky databázy, ale mysqldump nebude fungovať.
Neznám heslo používateľa root (vygenerovaný systém).
Snažil som sa pridať soket do my.conf a reštartovanie servera mysql:

[mysqldump]
socket = /var/run/mysqld/mysqld.sock

Akákoľvek pomoc by bola ocenená!

odpovede:

9 pre odpoveď č. 1

Aj napriek tomu, že sa pripájate cez soket, musíte dať užívateľovi root

ak root@localhost nemá žiadne heslo, potom postupujte takto:

mysqldump -uroot --protocol=socket -S /var/run/mysqld/mysqld.sock database

ak root@localhost má heslo, potom to urobte takto:

mysqldump -uroot -p --protocol=socket -S /var/run/mysqld/mysqld.sock database

Ak bežíte

mysql

umožňuje prihlásiť sa pomocou zadávania -uroot, skúste tiež určiť zásuvku

mysqldump database

Len som si všimol, že zásuvka, ktorú ste zadali pre mysqldump je

[mysqldump]
socket = /var/run/mysqld/mysqld.sock

Musíte sa uistiť, že zásuvka je definovaná pod [mysqld] časť sekcie my.cnf tiež

Ak toto neexistuje

[mysqld]
socket = /var/run/mysqld/mysqld.sock

potom spustite tento dotaz

SHOW VARIABLES LIKE "socket";

a uistite sa, že názov a cesta súboru soketu.

Dalo by sa vám systém DBA pridať vlastný užívateľ pre vás

GRANT ALL PRIVILEGES ON *.* TO tyler@localhost;

Potom môžete spustiť

mysqldump -utyler --protocol=socket -S /var/run/mysqld/mysqld.sock database

Toto nie je bezpečné. Tyler by mal mať heslo. Spustite to takto:

SET SQL_LOG_BIN=0;
GRANT ALL PRIVILEGES ON *.* TO tyler@localhost IDENTIFIED BY "tylerspasssword";

potom môžete urobiť

mysqldump -utyler -p --protocol=socket -S /var/run/mysqld/mysqld.sock database

Pokúsiť sa !!!


1 pre odpoveď č. 2

Našiel som riešenie! Zásuvka nemá vlastné poverenia. Sú uložené v /root/.my.cnf namiesto toho. Mína mala iba používateľské meno a heslo mysql Príkaz. Potreboval som pridať [mysqldump] k nemu. Tu je to, čo som ja /root/.my.cnf súbor vyzerá teraz:

[mysql]
user=root
pass=myawesomepass

[mysqldump]
user=root
pass=myawesomepass