Vraag & Antwoord

OS Linux

[Linux Mandrake 9.0] MYSQL poort 3306 naar internet openen

17 antwoorden
  • 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
  • <te snel met het knopje>
  • Waarom wil je dat iemand van buitenaf in je database kan klooien? Laat hem je database gewoon bereiken via jouw apache en php zodat je er zelf een beetje controle over hebt.
  • Uit veiligheid is dit niet echt aan te raden, wachtwoorden e.d. worden standaard namelijk "plain" dus niet versleuteld over het internet verstuurd. zo kan elke boerenlul dus achter je wachtwoorden komen, dit wil je neem ik aan niet... :roll: :wink:
  • Bedankt voor jullie bezorgheid m.b.t. de veiligheid. Hier zijn echter encryptie mogelijkheden voor. Toch zou ik graag willen weten hoe ik de poort ook kan bereiken via het externe ip. Waar kan ik dat instellen? Roy
  • heb je op je eigen pc een firewall staan ?? en kan poort 80 bijv. wel van buitenaf gevonden worden ? je zal eerst poort 3306 op je router moeten forwarden naar de poort op je pc en op je pc in je firewall die poort open moeten gooien
  • 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
  • De firewall kun je op eenvoudige wijze instellen via guarddog, kijk op www.simonzone.com/guarddog . Verder kun je via ip-chains (linux 2.2) of ip-tables (linux 2.4) de poort openzetten. Max
  • 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
  • Als je een installatie vanuit broncode doet moet je op een gegeven moment het bestand support-files/my-medium.cnf copieeren naar /etc/my.cnf Misschien is dat het bestand dat je zoekt.
  • 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.
  • 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
  • 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
  • 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)
  • De optie skip-networking zit helemaal niet in my.cnf
  • Of bedoel je dat niet DarthV?
  • 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]

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.