Ga naar inhoud

[Linux Mandrake 9.0] MYSQL poort 3306 naar internet openen


anoniem

Aanbevolen berichten

Heb onlangs Mandrake 9.0 geinstalleerd, inclusief apache, php en mysql. Alle drie zijn deze actief op de pc. Apache is dan ook via internet te bereiken over poort 80. Mysql is echter alleen via het lokale ip te bereiken en niet via het internet ip. Terwijl op de hardwarematige router zowel poort 80 en 3306 open staat. Ik vermoedt dat poort 3306 op de pc zelf nog moet worden geactiveerd, om verkeer van buitenaf toe te laten. Waar kan ik dat doen??? Bedankt, Roy
Link naar reactie
Zoals ik al zei op de router is poort 80 en 3306 geforward naar de betreffende pc. Poort 80 gaat prima 3306 niet. Ik vermoedt inderdaad dat er een firewall actief is op de betreffende pc zelf. Aangezien ik een nieuweling ben m.b.t. linux weet ik echter niet welke firewall en waar ik moet zoeken? Ondanks dat kan ik mysql wel op het lokale ip bereiken. De instellingen van users in mysql staan op % en niet op localhost. Roy
Link naar reactie
Weet het bijna niet meer! De instellingen voor de databases (mysql users) staan op % en niet op localhost, dus dit is correct. Poorten staan ook open, immers kan ik via localhost connecteren, naar 3306. Skip-networking staat uit wat ook correct is. Bovendien kan ik ook niet met een andere lokale pc via het interne netwerk, interne ip naar de computer connecteren op poort 3306. Vermoedt eigenlijk dat het aan de standaard configuratie van mysql ligt die bij mandrake wordt geleverd. Heb al veel configuratie bestanden van MySQL doorgenomen maar krijg het niet geconfigureerd voor externe conecties. Men heeft het veel over my.cnf maar deze bevindt zich niet op de schijf. Wel mysqlaccess heb ik aangepast, maar het werkt nog niet. M.a.w. help! Roy
Link naar reactie
Zoek in het bestand my.cnf de volgende entry op: skip-networking Zet hier een # teken voor en restart de mysql server. Default staat mysql namelijk ingesteld dat alleen de host waarop mysql geinstalleerd is toegang heeft tot de server. Hiermee over rule je dus deze standaard instelling. Als je my.cnf niet kunt vinden geen je het commando: #find / | grep my.cnf Dit moet het probleem zijn vreemd genoeg heb je het al uitgezet, dus ik vermoed dat my.cnf niet op de juiste plaats staat. Controleer door het bestand /etc/init.d te controleren welke my.cnf wordt opgeroepen.
Link naar reactie
my-small.cnf heb ik gekopieerd en hernoemd naar /etc/my.cnf. Via de terminal met het commando mysql variables heb ik de skip-networking status opgevraagd, deze staat op off. Ook is er een user met alle priviliges aangemaakt en die via iedere host % mag connecteren. Verder is ook de poort gemapped op de router naar de betreffende server. M.a.w. ik weet het niet meer. Kan het nog iets te maken hebben met een socket die gebruikt wordt. Ik zie nl. een verwijzing naar een socket, al weet ik niet precies wat dit betekent. Die verwijzing is er standaard. Roy
Link naar reactie
Het schijnt inderdaad de socket connectie te zijn. Op Windows kan MySQL uitsluitend gebruik maken van een TCP/ IP connectie. Op Linux heeft men de keuze uit TCP/ IP of een socket connectie. Deze staat dus bij Mandrake Linux op socket connectie. Waardoor ik dus niet op ip kan connecteren maar wel via localhost. Weet iemand hoe ik die socket connectie kan uitschakelen, en daar TCP/ IP van kan maken. Groeten, Roy
Link naar reactie
De oplossing is en blijft een # voor skip-networking te zetten. Ik heb dit getest en het werkt een tcp poort wordt geopend. Zoals ik al eerder aangaf moet je met #find / | grep my.cnf Zoeken. Een Distributie versie van mysql zet namelijk meestal het bestand my.cnf in de directory /etc/mysql/ en NIET in /etc. zoals de download versie doet. Het bestand /etc/init.d/mysql is het start-stop script voor mysql. Hierin staat ook waar het configuratie bestand staat (waarschijnlijk /etc/mysql/my.cnf)
Link naar reactie
Oke daar gaat ie dan, sorry voor de wat lange tekst: Het bestand my.cnf - [code:1:d2cb1d0bbb] # You can copy this to one of: # /etc/mysql/my.cnf to set global options, # mysql-data-dir/my.cnf to set server-specific options (in this # installation this directory is /var/lib/mysql) or # ~/.my.cnf to set user-specific options. # # One can use all long options that the program supports. # Run the program with --help to get a list of available options # This will be passed to all mysql clients [client] #password = my_password 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 [safe_mysqld] err-log = /var/log/mysql/mysql.err [mysqld] user = mysql pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock port = 3306 # # You can also put it into /var/log/mysql/mysql.log but I leave it in /var/log # for backward compatibility. Both location gets rotated by the cronjob. #log = /var/log/mysql/mysql.log log = /var/log/mysql.log basedir = /usr datadir = /var/lib/mysql tmpdir = /tmp language = /usr/share/mysql/english skip-locking # # The skip-networkin option will no longer be set via debconf menu. # You have to manually change it if you want networking i.e. the server # listening on port 3306. The default is "disable" - for security reasons. #skip-networking <- !!!!!!!!!!!!! HIER STAAT IE DUS !!!!!!!!!!!!! set-variable = key_buffer=16M set-variable = max_allowed_packet=1M set-variable = thread_stack=128K # # Here you can see queries with especially long duration #log-slow-queries = /var/log/mysql/mysql-slow.log # # The following can be used as easy to replay backup logs or for replication #server-id = 1 #log-bin = /var/log/mysql/mysql-bin.log #binlog-do-db = include_database_name #binlog-ignore-db = include_database_name # # Read the manual if you want to enable InnoDB! skip-innodb [mysqldump] quick set-variable = max_allowed_packet=1M [mysql] #no-auto-rehash # faster start of mysql but no tab completition [isamchk] set-variable = key_buffer=16M [/code:1:d2cb1d0bbb] Het init.d bestand om mysql starten. Kijk ook goed dat hierin te zien is dat gekeken wordt naar /etc/mysql/my.cnf. De regel conf - [code:1:d2cb1d0bbb] #!/bin/sh -e # # MySQL daemon start/stop script. # # Debian version. Based on the original by TcX. # test $DEBIAN_SCRIPT_DEBUG && set -v -x test -x /usr/sbin/mysqld || exit 0 SELF=$(cd $(dirname $0); pwd -P)/$(basename $0) CONF=/etc/mysql/my.cnf MYADMIN="/usr/bin/mysqladmin --defaults-extra-file=/etc/mysql/debian.cnf" # Safeguard (relative paths, core dumps..) cd / umask 077 export PATH=/bin:/usr/bin # mysqladmin likes to read /root/.my.cnf. This is usually not what I want # as many admins e.g. only store a password without a username there and # so break my scripts. export HOME=/etc/mysql/ is_mysqld_alive () { if [ -n "`$MYADMIN ping 2>/dev/null`" ]; then return 0; else return 1; fi } case "$1" in 'start') # Start daemon echo -n "Starting MySQL database server: mysqld" /usr/bin/safe_mysqld > /dev/null 2>&1 & for i in 1 2 3 4 5 6; do if is_mysqld_alive; then break; fi sleep 1 done if is_mysqld_alive; then echo "." else echo "...failed." fi ;; 'stop') # * As a passwordless mysqladmin (e.g. via ~/.my.cnf) must be possible # at least for cron, we can rely on it here, too. (although we have # to specify it explicit as e.g. sudo environments points to the normal # users home and not /root) echo -n "Stopping MySQL database server: mysqld" if is_mysqld_alive; then set +e $MYADMIN shutdown r=$? set -e if [ "$r" -ne 0 ]; then echo "...failed" echo -n "Killing MySQL database server by signal: mysqld" for i in 1 2 3 4 5 6; do killall -15 mysqld sleep 1 killall -9 mysqld if is_mysqld_alive; then break; fi done fi fi if is_mysqld_alive; then echo "...failed." echo "Please stop the daemon yourself!" exit -1 else echo "." fi ;; 'restart') set +e; $SELF stop; set -e $SELF start ;; 'reload'|'force-reload') echo -n "Reloading MySQL database server: mysqld" $MYADMIN reload echo "." ;; 'status') $MYADMIN version ;; *) echo "Usage: $SELF start|stop|restart|reload|force-reload" exit 1 ;; esac [/code:1:d2cb1d0bbb]
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

  • Populaire leden

    Er is nog niemand die deze week reputatie heeft ontvangen.

  • Leden

    Geen leden om te tonen

×
×
  • Nieuwe aanmaken...