You are not logged in.

Epigenom

Beginner

  • "Epigenom" started this thread

Posts: 14

wcf.user.option.userOption53: Nein

  • Send private message

1

Thursday, January 5th 2017, 11:38am

Counter Strike Source Server MySQL testen mit einem einfachen Sourcemod Script

Hallo zusammen,

wie in der Überschrift beschrieben, suche ich als Laie ein Script, das mir nur sagt, ob der Counter Strike Source Server mit der MySQL Datenbank Verbindung aufnehmen kann und dass dann im log in der Konsole anzeigt

Wir haben bei einem Hoster ein Gamerroot mit TekBase.
Dort können wir problemlos die CSS Server erstellen, mt HLStatsX und Sourceban.
Wir haben jedoch keinen Zugriff auf die Datenbank um dort z.B. über phpMyAdmin eine Datenbank hochzuladen.

Der Hoster hat uns nun gesagt, dass wir einen Minecraft Server eröffnen sollen und die damit verbundene Datenbank dann nutzen können.
Dabei ist der Support und diese Aussagen sehr spärlich, man muss dem Hoster alles mühsam "aus der Nase ziehen".

Jetzt steht der MySQL Server und ich habe die Daten in die databases.cfg eingetragen.


"serverredirect"
{
"driver" "mysql"
"host" "localhost"
"database" "db_xxxxxx_646"
"user" "xxxxxx_646"
"pass" "xxxxxx"
//"timeout" "0"
"port" "3306"
}

Mit phpMyAdmin habe ich die Datenbank für serverredirect fehlerlos hochgeladen.

MySQL queries

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
--
-- Table structure for table `server`
--

CREATE TABLE IF NOT EXISTS `server` (
  `id` int(11) NOT NULL auto_increment,
  `address` varchar(50) NOT NULL default '127.0.0.1',
  `groupnumber` int(11) NOT NULL default '1',
  `last_update` datetime NOT NULL,
  `display_name` varchar(100) NOT NULL default '[new server]',
  `offline_name` varchar(100) NOT NULL default '[offline]',
  `maxplayers` int(11) NOT NULL default '0',
  `currplayers` int(11) NOT NULL default '0',
  `map` varchar(70) NOT NULL default '[no map]',
  PRIMARY KEY  (`id`),
  KEY `groupnumber` (`groupnumber`),
  KEY `last_update` (`last_update`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;

--
-- Dumping data for table `server`
--

INSERT INTO `server` (`id`, `address`, `groupnumber`, `last_update`, `display_name`, `offline_name`, `maxplayers`, `currplayers`, `map`) VALUES (1, '37.114.96.74:27015', 1, '2016-12-25 00:00:00', 'e.Rz Italy only | {MAP} | {CURR}/{MAX}', 'e.Rz Italy only | OFFLINE', 0, 0, '[no map]');
INSERT INTO `server` (`id`, `address`, `groupnumber`, `last_update`, `display_name`, `offline_name`, `maxplayers`, `currplayers`, `map`) VALUES (2, '37.114.96.74:27025', 1, '2016-12-25 00:00:00', 'e.Rz Dust2 only | {MAP} | {CURR}/{MAX}', 'e.Rz Dust2 only | OFFLINE', 0, 0, '[no map]');
INSERT INTO `server` (`id`, `address`, `groupnumber`, `last_update`, `display_name`, `offline_name`, `maxplayers`, `currplayers`, `map`) VALUES (3, '37.114.96.74:27035', 1, '2016-12-25 00:00:00', 'e.Rz Dust only | {MAP} | {CURR}/{MAX}', 'e.Rz Dust only | OFFLINE', 0, 0, '[no map]');
INSERT INTO `server` (`id`, `address`, `groupnumber`, `last_update`, `display_name`, `offline_name`, `maxplayers`, `currplayers`, `map`) VALUES (4, '37.114.96.74:27045', 1, '2016-12-25 00:00:00', 'e.Rz Office only | {MAP} | {CURR}/{MAX}', 'e.Rz Office only | OFFLINE', 0, 0, '[no map]');
INSERT INTO `server` (`id`, `address`, `groupnumber`, `last_update`, `display_name`, `offline_name`, `maxplayers`, `currplayers`, `map`) VALUES (5, '37.114.96.75:27015', 1, '2016-12-25 00:00:00', 'e.Rz Hostage only | {MAP} | {CURR}/{MAX}', 'e.Rz Hostage only | OFFLINE', 0, 0, '[no map]');
INSERT INTO `server` (`id`, `address`, `groupnumber`, `last_update`, `display_name`, `offline_name`, `maxplayers`, `currplayers`, `map`) VALUES (6, '37.114.96.75:27025', 1, '2016-12-25 00:00:00', 'e.Rz Bomb only | {MAP} | {CURR}/{MAX}', 'e.Rz Bomb only | OFFLINE', 0, 0, '[no map]');
INSERT INTO `server` (`id`, `address`, `groupnumber`, `last_update`, `display_name`, `offline_name`, `maxplayers`, `currplayers`, `map`) VALUES (7, '37.114.96.75:27035', 1, '2016-12-25 00:00:00', 'e.Rz Fun Map | {MAP} | {CURR}/{MAX}', 'e.Rz Fun Map | OFFLINE', 0, 0, '[no map]');



Wenn ich nun den Server neu starte kommt im log:

L 01/05/2017 - 11:26:42: [serverredirect.smx] Database error: [2002]: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

Wenn ich statt localhost die IP eingebe die auch von phpMyAdmin verwendet wird kommt Fehlermeldung:

L 01/05/2017 - 11:41:13: [serverredirect.smx] Database error: [2013]: Lost connection to MySQL server at 'reading initial communication packet', system error: 111


Jetz könnte es ja sein, dass der Fehler mit dem Plugin zusammenhängt.

Meine Frage deshalb, gibt es ein einfaches Plugin, das den Kontakt zur Datenbank herstellt und nur ausgibt ob es funktioniert oder nicht.

Wenn ihr bis hier gelesen habt, dann danke ich euch für eure investierte Zeit und hoffe dass mir der eine oder andere helfen kann.

Grüße
Epi

CRYHACK_

Professional

Posts: 580

Location: Zuhause

wcf.user.option.userOption53: Nein

  • Send private message

2

Thursday, January 5th 2017, 7:33pm

Es gibt auch Plugins die das selbe können wie serverredirect und keine Datenbank benötigen. Wieso nutzt du keines von dennen?

Epigenom

Beginner

  • "Epigenom" started this thread

Posts: 14

wcf.user.option.userOption53: Nein

  • Send private message

3

Thursday, January 5th 2017, 8:22pm

Hallo CRYHACK_,

vielen dank für deine Antwort.

Ich habe nur welche gefunden, die einen Tastenbind benötigen zur Bestätigung und die Server unvollständig links oben in der Ecke einblenden.

Habe die hier gefunden:
https://www.sourcemod.net/plugins.php?ca…direct&search=1

Am geeignetsten erschien mir daher Server Redirect 1.1 bzw. die gefixten Versionen davon um 8 Server als Auswahl anzuzeigen.
https://forums.alliedmods.net/showthread.php?p=1419493

Darüber hinaus würde es meinen Horizont erweitern, wenn ich das mit der MySQL Datenbank hinbekomme.

Habe mir das hier mal angeschaut:
https://wiki.alliedmods.net/SQL_(SourceMod_Scripting)

Aber mein Englisch ist zu grottig, so dass ich das Wesentliche nicht verstehe, um ein einfaches Connectcript für Sourcemod zu erstellen.

Wäre das hier eine einfache Abfrage:

MySQL queries

1
2
3
4
5
6
7
8
9
10
11
char error[255];
Database db = SQL_DefConnect(error, sizeof(error));
 
if (db == null)
{
	PrintToServer("Could not connect: %s", error);
} 
else 
{
	delete db;
}

Wenn ja, kann ich das dann in ein beliebiges script.sp kopieren und kompilieren?
Dann den MySQL Server in die Database.cfg.
Dann das Teil in den Plugin Ordner und die Abfrage findet statt?

Danke dir für deine Unterstützung.

Grüße
Epi

This post has been edited 2 times, last edit by "Epigenom" (Jan 5th 2017, 8:27pm)


Impact

Super Moderator

Posts: 1,276

wcf.user.option.userOption53: Nein

  • Send private message

4

Friday, January 6th 2017, 12:50am

Spar dir die Arbeit, der Fehler wäre gleich. Du könntest mal 127.0.0.1 als Adresse probieren. Der Fehler ist nicht unüblich (siehe Google) und lässt sich am besten (bzw. nur) durch den Hoster lösen. Am besten teilst du ihn ihm mit. Du sagtest dass es sich um einen "Gameroot" handelt. Hast du darauf Zugriff via SSH? Wenn ja lässt sich das sicher leicht lösen.

Falls du mir nichts glaubst ist im Anhang ein Plugin dabei welches als Argument eine Konfiguration aus der databases.cfg erwartet (Auf Groß- und Kleinschreibung achten). In deinem Falle

Source code

1
sm_testdbconf serverredirect

Und dir dann je nachdem wie, bzw. wo du den Befehl nutzt, sagt ob es dahin verbinden kann. Bedenke bitte dass das Plugin keine threaded Queries (wird abseits dem Gameserver Thread ausgeführt und stoppt diesen nicht) nutzt und daher am besten auf einem leeren Server benutzt werden sollte. Denke auch daran dass nach Änderungen an der databases.cfg die Map gewechselt werden sollte damit diese übernommen werden. Den Befehl nutzt du am besten über die Konsole oder per Rcon mit zb. hlsw. Vergiss nicht das Plugin wieder zu entfernen wenn du fertig mit testen bist da der Befehl von jedem benutzt werden kann.
Impact has attached the following files:
  • testdbconfig.sp (907 Byte - 52 times downloaded - latest: May 4th 2019, 10:31am)
  • testdbconfig.smx (4.06 kB - 48 times downloaded - latest: Apr 22nd 2019, 4:20pm)

This post has been edited 20 times, last edit by "Impact" (Jan 6th 2017, 1:28am)


Epigenom

Beginner

  • "Epigenom" started this thread

Posts: 14

wcf.user.option.userOption53: Nein

  • Send private message

5

Friday, January 6th 2017, 7:43pm

Hallo Impact,

vielen Dank für deine kompetente Hilfe.

Leider habe ich keinen Zugriff per SSH.
Ärgert mich auch und bin auch mit dem Support nicht zufrieden, weil die Leistung nicht der beworbenen Leistung entspricht.

Noch eine abschliessende Frage, weil ich denke dass du mit deiner Antwort alles gesagt hast.

Ist dir ein Serverredirect Plugin bekannt, das einfach mehrere Server auflistet und man ohne einen Tastenbind als Spieler einen Server auswählen kann?

Vielen Dank noch einmal für deine Hilfe.

Grüße
Epi

hannibal-l-

Professional

Posts: 552

Occupation: Fisi

wcf.user.option.userOption53: Ja

  • Send private message

6

Friday, January 6th 2017, 7:59pm

Tagchen,

wenn du eine mysql Datenbank benötigst, kann ich dir behilflich sein.

Add mich einfach bei Steam

Gruß

Hannibal
Wer deutlich spricht, riskiert verstanden zu werden.

http://steamcommunity.com/profiles/76561197996267687

Epigenom

Beginner

  • "Epigenom" started this thread

Posts: 14

wcf.user.option.userOption53: Nein

  • Send private message

7

Friday, January 6th 2017, 8:46pm

Hallo zusammen,

der Hoster hat die MySQL nun für einen Zugriff frei gegeben.
Während dem Testen kamen noch die selben Fehlermeldungen und um 20:36:02 kam Connected successfully.


Das Gute war, dass ich mit dem Plugin von Impact die Info hatte ob es funktioniert oder nicht.
Da konnte keine Diskussion aufkommen ob es am serverredirect 1.1. liegt.

Vielen Dank dafür
Grüße
Epi

Impact

Super Moderator

Posts: 1,276

wcf.user.option.userOption53: Nein

  • Send private message

8

Saturday, January 7th 2017, 5:45am

Ist dir ein Serverredirect Plugin bekannt, das einfach mehrere Server auflistet und man ohne einen Tastenbind als Spieler einen Server auswählen kann?
Leider nicht.

Epigenom

Beginner

  • "Epigenom" started this thread

Posts: 14

wcf.user.option.userOption53: Nein

  • Send private message

9

Saturday, January 7th 2017, 12:50pm

Hallo nochmal,

muss leider sagen, dass ich mich zu früh gefreut habe.

Und der Support bei gamerzhost ist gelinde gesagt eine Katastrophe.

Es hatte den Anschein dass es auf dem Office only Server geht aber das war ein Irrtum.
Ich bekomme dort auch keinen Kontakt mehr zur MySQL.

Aussage des Hosters:

Quoted

"....Bisher ist noch nie der Wunsch Kundenwunsch geäußert wurden von Kunden
welche CSS/ CSGO Server betrieben haben eine lokale MYSQL Datenbank zu
betreiben. Im Gegenteil wünschten die meißten Kunden das dieser Dienst
aus Performancegründen entfernt wird. Lediglich bei Minecraftservern war
MYSQL Lokal Vorraussetzung da es Plugins dort gibt welche nur auf
lokalen Datenbanken arbeiten.

Es ist egal von welcher IP auf dem
Root auf die Datenbank zugegriffen wird, solang als Host localhost oder
127.0.0.1 angegeben wird...."
Es ist dort dann so, dass man im Gamerroot einen Minecraftserve erstellen muss um eine MySQL Datenbank zu haben.

Bin mal gespannt wie das noch wieter geht.

Auf jedenfall war das Plugin zur Abfrage sehr hilfreich, weil natürlich von gamerzhost gleich die Aussage kam, dass das Plugin (serverredirect) schon alt ist.
Was für ein Schenkelklopfer.
Die haben dann nichtmal richtig verstanden, dass ich es schon garnicht mehr mit dem Plugin versuche sondern nur teste ob eine Connectivität besteht.
Den Test führe ich mit Plugin von Impact durch und der Test nimmt nur die Daten vom Eintrag "serverredirect" aus der databases.cfg.

Die Ignoranz des Supports ist erschreckend.

Danke für eure Hilfe und Bemühungen.

EDIT:
Hallo und vorallem hallo Impact,

ich muss noch kurz berichten.

Wir haben ja in der databases.cfg auch den sourcebans mysql eingetragen.
Auf den bekommen wir nur keinen direkten Zugriff.

Aber gerade um die Wirksamkeit des Plugins von Impact zu belegen ist der natürlich bestens geeignet.
Der mysql von sourcebans funktioniert nämlche einwandfrei.

13:02:32 L 01/07/2017 - 13:03:35: rcon from "46.91.139.24:3118": command "sm_testdbconf sourcebans"
13:02:32 Connected successfully

Was offensichtlich nicht stimmt ist der interne Umgang mit den Datenbanken.
Weil bei der Abfrage der "serverredirect" Datenbank habe ich auf Aussage von gamerzhost auch als host "localhost" drin, obwohl der Zugriff mit phpmyadmin eine andere Zugriffsip anzeigt wie die Datenbank IP von Sourcebans.

Bei der Abfrage kommen dann auch die besagten Fehlermeldungen.
Sowohl mit localhost wie mit der IP aus phpmyadmin.

Im Ergebnis ist aber klar, wie schon Impact geschrieben hat, dass

Quoted

Spar dir die Arbeit, der Fehler wäre gleich. Du könntest mal 127.0.0.1
als Adresse probieren. Der Fehler ist nicht unüblich (siehe Google) und
lässt sich am besten (bzw. nur) durch den Hoster lösen. Am besten teilst
du ihn ihm mit. Du sagtest dass es sich um einen "Gameroot" handelt.
Hast du darauf Zugriff via SSH? Wenn ja lässt sich das sicher leicht
lösen.
Leider bekomme ich dort Aussagen wie: ""...das Passwort war nicht das richtige ich habe das jetzt an dieses PW angepasst..".
Danach hat natürlich weiterhin nichts funktioniert.

Wenn man dann im Ton etwas deutlicher wird muss mn sich noch einen schlechten Umgangston unterstellen lassen.

Also es funktioniert noch immer nicht aber das Problem lässt sich sehr gut mit Impacts Plugin einkreisen.

EDIT 2:
nun ist es gelöst, dank dem Plugin von Impact.

Ich habe denen einen Test CSS Server eingerichtet mit dem Plugin und dem Anbieter gesagt, dass er es selbst testen soll.

Nachdem er um ca. 11 Uhr noch behauptet hat, dass das funktionieren muss er hätte alles getestet und es egal ist ob man localhost oder 127.0.0.1 nimmt, kommt er nun zu dem Schluss dass die Firewall zwischen localhost und 127.0.0.1 so unterscheidet, dass nur 127.0.0.1 geht.

Bin mir dabei aber nicht sicher ob die Fehlerangabe stimmt, da ich mit localhost, 127.0.0.1 und der externen IP getestet habe.
Ist mir am Ende auch schnuppe.
Die Datenbankverbindung steht also.

Wenn serverredirect nun im weiteren nicht funktioniert, dann weis ich dass es nicht an der Datenbankverbindung liegt.

Grüße
Epi

This post has been edited 1 times, last edit by "fluxX" (Jan 7th 2017, 5:54pm)


Kammi_

Beginner

Posts: 8

wcf.user.option.userOption53: Ja

  • Send private message

10

Sunday, April 16th 2017, 12:52pm

die einfachste lösung wäre ein symlink gewesen da mysql standart mässig seine sock datei hier anlegt /var/run/mysqld/mysqld.sock

Source code

1
ln -s /var/run/mysqld/mysqld.sock /tmp/mysql.sock

DeaD_EyE

Administrator

Posts: 3,978

Location: Hagen

Occupation: Mechatroniker (didaktische Systeme)

wcf.user.option.userOption53: Nein

  • Send private message

11

Wednesday, April 19th 2017, 10:55am

Standardmäßig befindet sich der UNIX-Socket an einem anderen Pfad definiert in der my.cnf.
Gut wäre es, wenn man den Pfad des UNIX-Sockets in der databases.cfg angeben könnte.

Laut der offiziellen Dokumentation von MySQL ist der Socket standardmäßig in /tmp/mysql.sock

Bei Debian ist es dann in /var/run/mysqld/mysqld.sock definiert in der my.cnf

Am besten wäre es natürlich den MySQL-Server so zu konfigurieren, dass der Socket in /tmp/mysql.sock angelegt wird.
Die Lösung mit dem Symlink ist nur ein drum herum arbeiten und löst nicht das eigentliche Problem.
Hinzu kommt, dass Dateien in /tmp auch mal gelöscht werden. D.h. der Admin müsste sich drum kümmern, dass jedes mal
erneut nach dem Booten ein Symlink erstellt wird.

Anhaltspunkte wieso das so ist, findet man hier: https://github.com/alliedmodders/sourcem…Driver.cpp#L126
https://dev.mysql.com/doc/refman/5.5/en/…al-connect.html

Spoiler Spoiler

Quoted

The value of host may be either a host name or an IP address. If host is NULL or the string "localhost", a connection to the local host is assumed. For Windows, the client connects using a shared-memory connection, if the server has shared-memory connections enabled. Otherwise, TCP/IP is used. For Unix, the client connects using a Unix socket file. For local connections, you can also influence the type of connection to use with the MYSQL_OPT_PROTOCOL or MYSQL_OPT_NAMED_PIPE options to mysql_options(). The type of connection must be supported by the server. For a host value of "." on Windows, the client connects using a named pipe, if the server has named-pipe connections enabled. If named-pipe connections are not enabled, an error occurs.

Similar threads