¿Por qué no funciona mi configuración .my.cnf?

15

Tengo un archivo .my.cnf en mi directorio de inicio en mi escritorio que incluye:

[dbid]
user = myusername
password = mypassword
database = dbname
host = server.location.com

Si recuerdo correctamente, antes de actualizar Ubuntu 10.04 a 11.04, pude usar el comando

mysql dbid

Para conectarse directamente a la base de datos

Pero hoy me sale este error:

ERROR 1049 (42000): Unknown database 'dbname'

¿Hice algo malo?

David LeBauer
fuente
Marqué esto como 'no es una pregunta real' basado en la respuesta que he incluido en la actualización. El problema tenía que ver con los cambios realizados en la dirección IP en lugar de tener que ver con la base de datos. No estoy realmente seguro de si debería cerrarse o si debería proporcionar la actualización como respuesta.
David LeBauer
A menudo es suficiente comentar las cuentas, eso no debe usarse con un "#".
No entiendo lo que quieres decir, ¿cómo responde esto a la pregunta?
David LeBauer

Respuestas:

23

No estoy seguro de cómo funcionaba su .my.cnf anterior, y en realidad nunca he usado estos archivos antes (principalmente porque no sabía sobre ellos). Entonces, después de un poco de investigación, encontré este enlace y se me ocurrió el siguiente ~ / .my.cnf que funcionó para mí:

[clientdbid]
password = mypass
database = dbname
host = server.location.com

y el comando que lo lee:

mysql --defaults-group-suffix=dbid

Un par de cosas para señalar (puntos destacados del artículo vinculado):

  • El grupo debe ir precedido de 'cliente' para ser leído por mysql
  • tiene que ir después de cualquier grupo [cliente], de lo contrario se anulará

Probé esto en mysql 5.5 en una Mac, funcionó muy bien. ¡Y ahora que sé sobre ellos, los usaré!

ACTUALIZACIÓN Después de configurar esto, me di cuenta de que la línea de comando mysql --defaults-group-suffix=dbidera un poco pesada. Entonces, como bono adicional, suponiendo que esté ejecutando Linux / Mac / Etc haga esto:

echo 'alias mysql_dbid="mysql --defaults-group-suffix=dbid"' >> ~/.profile

¿Dónde dbidestá el nombre de su grupo de sufijos?

Derek Downey
fuente
Hola @DTest, ¡Buenas cosas en tu respuesta! +1 (BTW Felicidades por tu insignia de mysql)
RolandoMySQLDBA
Iba a votar este, luego dije Wow Dejavu. Esto fue de varios meses atrás.
RolandoMySQLDBA
0

El administrador de mi base de datos me ayudó a descubrir el problema, y ​​aquí está la solución al problema original que provocó esta pregunta:

El problema (según tengo entendido) era que la base de datos solo permite el acceso a computadoras basadas en direcciones IP específicas. Mi dirección IP había cambiado cuando obtuve una nueva computadora, y tenía diferentes contraseñas para las cuentas que se habían configurado con las diferentes direcciones IP, en palabras del administrador de mi base de datos.

Tenía algunos nombres de usuario diferentes para usted basados ​​en [email protected], [email protected] y su dirección IP. Las contraseñas no eran las mismas para todos, lo que causó confusión, fue mi culpa el problema.

David LeBauer
fuente
0

Como una actualización de la actualización de Derek Downey, así es como uso un archivo común ~ / .my.cnf en diferentes computadoras Linux, eligiendo la sección adecuada de acuerdo con el nombre de host automáticamente:

echo 'alias mysql="mysql --defaults-group-suffix=$HOST"' >> ~/.bash_aliases

Después de eso, todo lo que tengo que escribir en la línea de comando es mysql.

Christian Pietsch
fuente