sql >> Databasteknik >  >> RDS >> Mysql

Logga in på MySQL-kontot med unix_socket

För att ansluta till en fjärransluten MySQL-server, vare sig det är direkt eller genom en SSH-tunnel, kan du inte använda unix_socket autentiseringsplugin som kräver lokal åtkomst till unix-socketfilen på DB Server-operativsystemet.

unix_socket plugin implementeras med en speciell typ av fil (unix-socket) som är en form av inter-process communication (IPC) i *nix-system. Den tillåter din mysql CLI-klient att prata med DB:n och den kräver lokal åtkomst till socketfilen (dvs:/tmp/mysql.sock ). När du ansluter till uttaget, unix_socket plugin (serversidan) kommer att få användarens uid som är ansluten till uttaget (dvs. din användare) och kommer automatiskt att autentisera dig utan behov av ett lösenord.

Möjliga lösningar:

Om du ansluter till Machine B med en icke-root-användare, måste du skapa en DB-användare med samma namn som ditt användarkontonamn för icke-root-operativsystemet.

GRANT ALL PRIVILEGES ON *.* TO 'youruser'@'localhost' IDENTIFIED VIA unix_socket;

Nu kan du ansluta till mysql med ditt användarkonto och mysql CLI-klienten genom att helt enkelt köra:

youruser:~$ mysql

Om du vill ansluta till DB med root-användaren behöver du antingen tillgång till root-kontot eller en sudo-policy som är kopplad till din användare för att köra mysql-klienten.

youruser:~$ sudo mysql

Du kan uppenbarligen aktivera vanlig autentiserad nätverksåtkomst till ditt DB-rotkonto. Detta kan leda till säkerhetsproblem så det är bättre att begränsa det till localhost:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1' IDENTIFIED BY 'xxx' WITH GRANT OPTION;

Nu kan du logga in från vilket lokalt operativsystemkonto som helst om du kan autentisera din inloggning:

youruser:~$ mysql -u root -p



  1. Hur jämför man två databasobjekt i Oracle?

  2. MariaDB introducerar en JSON_TABLE()-funktion

  3. Returnera antalet rader som påverkas av UPDATE-satser

  4. Hur man använder python mysqldb för att infoga många rader samtidigt