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ď č. 1Aj 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