Jump to content
Froxlor Forum
  • 0

[solved] MySQL Access Hosts


Elaf

Question

Hallo, 

 

Ich m?chte, dass sich Benutzer auch von extern zu ihren Datenbanken verbinden k?nnen, die Einstellung MySQL-Access-Hosts untersagt das ja standardm??ig. Was muss ich hier eintragen, dass soch Benuter egal von welcher IP Adresse zu den Datenbanken verbinden k?nnen? 

Vielen Dank!

Link to comment
Share on other sites

15 answers to this question

Recommended Posts

Hi,

in MySQL-Access-Hosts muss dass das Prozentzeichen (%) stehen.

Zus?tzlich musste ich auf meinem Debian in der my.cnf festlegen, dass der mysql-server nicht nur auf localhost lauscht, sondern auf allen IPs.

 

EDIT:

Den Schl?ssel "bind-address" im Abschnitt [mysqld] l?schen oder auskommentieren.

Link to comment
Share on other sites

Scheint nicht zu funktionieren, hier mal mehr Daten: 

 

My.cnf:

#
# The MySQL database server configuration file.
#
# You can copy this to one of:
# - "/etc/mysql/my.cnf" to set global options,
# - "~/.my.cnf" to set user-specific options.
#
# One can use all long options that the program supports.
# Run program with --help to get a list of available options and with
# --print-defaults to see which it would actually understand and use.
#
# For explanations see
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html

# This will be passed to all mysql clients
# It has been reported that passwords should be enclosed with ticks/quotes
# escpecially if they contain "#" chars...
# Remember to edit /etc/mysql/debian.cnf when changing the socket location.
[client]
port            = 3306
socket          = /var/run/mysqld/mysqld.sock

# Here is entries for some specific programs
# The following values assume you have at least 32M ram

# This was formally known as [safe_mysqld]. Both versions are currently parsed.
[mysqld_safe]
socket          = /var/run/mysqld/mysqld.sock
nice            = 0

[mysqld]
#
# * Basic Settings
#
user            = mysql
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
port            = 3306
basedir         = /usr
datadir         = /var/lib/mysql
tmpdir          = /tmp
lc-messages-dir = /usr/share/mysql
#skip-external-locking
#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
#bind-address           = 0.0.0.0
#
# * Fine Tuning
#
key_buffer              = 16M
max_allowed_packet      = 16M
thread_stack            = 192K
thread_cache_size       = 8
# This replaces the startup script and checks MyISAM tables if needed
# the first time they are touched
myisam-recover         = BACKUP
#max_connections        = 100
#table_cache            = 64
#thread_concurrency     = 10
#
# * Query Cache Configuration
#
query_cache_limit       = 1M
query_cache_size        = 16M
#
# * Logging and Replication
#
# Both location gets rotated by the cronjob.
# Be aware that this log type is a performance killer.
# As of 5.1 you can enable the log at runtime!
#general_log_file        = /var/log/mysql/mysql.log
#general_log             = 1
#
# Error logging goes to syslog due to /etc/mysql/conf.d/mysqld_safe_syslog.cnf.
#
# Here you can see queries with especially long duration
#log_slow_queries       = /var/log/mysql/mysql-slow.log
#long_query_time = 2
#log-queries-not-using-indexes
#
# The following can be used as easy to replay backup logs or for replication.
# note: if you are setting up a replication slave, see README.Debian about
#       other settings you may need to change.
#server-id              = 1
#log_bin                        = /var/log/mysql/mysql-bin.log
expire_logs_days        = 10
max_binlog_size         = 100M
#binlog_do_db           = include_database_name
#binlog_ignore_db       = include_database_name
#
# * InnoDB
#
# InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.
# Read the manual for more InnoDB related options. There are many!
#
# * Security Features
#
# Read the manual, too, if you want chroot!
# chroot = /var/lib/mysql/
#
# For generating SSL certificates I recommend the OpenSSL GUI "tinyca".
#
# ssl-ca=/etc/mysql/cacert.pem
# ssl-cert=/etc/mysql/server-cert.pem
# ssl-key=/etc/mysql/server-key.pem



[mysqldump]
quick
quote-names
max_allowed_packet      = 16M

[mysql]
#no-auto-rehash # faster start of mysql but no tab completition

[isamchk]
key_buffer              = 16M

#
# * IMPORTANT: Additional settings that can override those from this file!
#   The files must end with '.cnf', otherwise they'll be ignored.
#
!includedir /etc/mysql/conf.d/

t2r25ctm.jpg

 

Hier die Fehlermeldung, die beim Versuch zu verbinden auftritt:

12:13:12] [Server thread/INFO]: [0;32;22mInitialisiere MySQL Backend...[m
[12:13:12] [Server thread/INFO]: [0;31;22mVerbindung konnte nicht hergestellt werden![m
[12:13:12] [Server thread/INFO]: [0;31;22mSQLException: Access denied for user 'Elafsql2'@'xxx' (using password: YES)[m
[12:13:12] [Server thread/INFO]: [0;31;22mSQLState: 28000[m
[12:13:12] [Server thread/INFO]: [0;31;22mVendorError: 1045[m
[12:13:12] [Server thread/ERROR]: Error occurred while enabling Survival_Games v0.2 (Is it up to date?)
java.lang.NullPointerException
 at API.MySQL.update(MySQL.java:83) ~[?:?]
 at Game.SG.ConnectMySQL(SG.java:59) ~[?:?]
 at Game.SG.onEnable(SG.java:46) ~[?:?]
Link to comment
Share on other sites

Ok, Verbindung zu deinem Server wird hergestellt, jedoch verweigert der das Login. Da

Das sagt die Zeile:


[12:13:12] [Server thread/INFO]: [0;31;22mSQLException: Access denied for user 'Elafsql2'@'xxx' (using password: YES)[m

Also sind die Mysql-Benutzer nicht richtig eingerichtet.

Jetzt wei? ich nicht ob Froxlor nachtr?glich den Login-Host bei den Mysql-Benutzern setzt.

Wenn du ein bissl mit mysql / Datenbanken auskennst, kannst du es selber ?ndern bzw. erstmal pr?fen.

Link to comment
Share on other sites

Hallo, 

 

Vielen Dank f?r deine Antwort, ich habe leider keine Ahnung von MySQL, ich suche eigentlich nur nach einem einfachen Weg, dass die Nutzer auch extern auf ihre DB?s zugreifen k?nnen.

Link to comment
Share on other sites

Dein Server erlaubt es ja schonmal von extern eine Verbindung aufzubauen.

Nur sind deine Benutzer noch so eingrichtet, dass diese nur von local auf die DB zugreifen k?nnen.

 

Du ben?tigst Root-Zugang zu deinem Server (SSH / Konsole) und zu Mysql

 

In der Kommando Zeile ?ffnest du einen Mysql-Clienten mit

mysql -u root -p

Mit den folgenden Befehlen erteilst du deinem Benutzer "Elafsql2" die Berechtigung auch von extern auf die Datenbank zuzugreifen

update mysql.user set Host="%" where user = "Elafsql2";
update mysql.db set host="%" where user = "Elafsql2";
FLUSH PRIVILEGES;
EXIT;

Das Flush sorgt daf?r, dass die Berechtigungen aktiv werden.
Das EXIT beenden den mysql-Clienten.

Nun solltest du hofftl. auch extern Zugriff haben.

 

Da du unter  MySQL-Access-Hosts bereits das "%" eingetragen hast, brauchst du das Prozedere bei zuk?nftigen Nutzern nicht durchf?hren. Da sollte der Remote-Login sofort m?glich sein.

 

PS: Auch nochmal pr?fen, ob du das Passwort stimmt.

Link to comment
Share on other sites

Folgende Zeilen ?ndern die Berechtigung f?r alle mysql-Nutzer, au?er f?r root.

Den root-Zugang solltest du aus Sicherheitsgr?nden nur local zulassen.

update mysql.user set Host="%"  where not user = "root";
update mysql.db set host="%"  where not user = "root";
FLUSH PRIVILEGES;
EXIT;

Wenn du alles ab "where ..." wegl?sst, ?nderst du die Zugangsberechtigung f?r wirklich alle Benutzer, auch root.

Link to comment
Share on other sites

MySQL User bestehen nicht wie ?blich aus zwei Teilen, sondern aus drei:

 

- Username

- Passwort

- Hostname

 

Du musst also eine Kopie des Users mit entsprechendem Host (IP des Clients) angeben. Wenn du also von z.B. deinem Rechner connecten willst und eine Dynamische IP hast, verwendest du am besten % als Host (any host)

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...