Sziasztok!
Van egy Delphi-ben megírt progrtamunk, sajnos a forráskódja nincs meg, viszont sok adat van benne, amire szükség van. Egy Woody-n futó MySQL 5.5.33 szolgáltatja az adatbázisát.
Felhúztam egy CentOS 9-et 10.5.22-es MariaDB-vel (a szerveren a PHP verzió 8.0.30, de szerintem a programműködéséhez nincs köze), de a program nem tud kapcsolatot teremteni az új adatbázisszerverrel hitelesítési probléma miatt.
A program az alábbi ddl-eket használja:
php_bcompiler.dll (5.0.4.4 PHP része)
php_gd2.dll (5.0.4.4 PHP része)
php_mysql.dll (5.0.4.4 PHP része)
php_win32std.dll (5.0.5.5 PHP része)
php_winbinder.dll (üresek az infó mezői)
php5ts.dll (5.0.5.5 PHP része)
libmysql.dll (üresek az infó mezői)
freeimage.dll (üresek az infó mezői)
Szerintetek hogy lehetne életre kelteni? Köszönöm előre a segítséget!
[Cím módosÍtás] Jobban belemélyedtem és mikiderült, hogy ez egy PHC-Win-nel EXE-vé fordított PHP-ban írt program (PHP-Winbinder-rel), azért vannak ott ezek a DLL-ek.
Hozzászólások
Szia, tippre ez megoldja: https://mariadb.com/kb/en/authentication-plugin-mysql_native_password/
A felhasználó jelszavát a PHPMyAdmin-ban a "Natív MySQL hitelesítés"-t választva állítottam be.
Lefuttattam az alábbi lekérdezést:
SELECT * FROM mysql.user;
Mysql alatt látom a titkosított jelszót (password mező).
MariaDB-ben szintén ugyanazt a karaktersorozatot látom, illetve ott látszik az authentication_string mező ugyanazzal az értékkel és a plugin mezőben pedig ott a mysql_native_password a felhasználó sorában.
Első buta kérdés:
volt ugye?
Mondjuk a phpmyadmin végrehajtja ezt egy ideje.
A második hogy a mysql/mariadb ugye host alapján authentikál:
tehát a bob@* nem ugyanaz a user mint a bob@<host>
Szóval érdemes megnézni, hogy az alkalmazás egyáltalán megkeresi-e a database-t (iptraf, tcpdump vagy szimplán a mysql logja).
Ha végképp nem megy:
FLUSH PRIVILEGES nem kell, ha a granttal adja a jogokat, az akkor kell, ha közvetlenül a mysql db-be piszkálod a user/passt, jogokat stb insert/update/delete-vel.
Domain, tárhely és webes megoldások: aWh
Lehet, hogy csak én dolgoztam fosszíliákkal, de MySQL 5.7-nél egyértelműen kell a flush privileges.
Valamint van egy php-embed.ini állomány az alábbi tartalommal:
Ezt találtam hozzá: https://github.com/RDashINC/embeder2
Ha kiderült és módosítottad, hogy nem Delphi, hanem ez a Php 5.0, akkor próbálj ilyen Php verziót keresni hozzá. Ha sietni akarsz, keress olyan Debian verziót, ami alapból ugyanezt a Php verziót támogatja. Ha több időd van, akkor pedig forrásból fordítsál le hozzá mindent egy újabb verzión. Minél frissebb a Linux, annál nagyobb szívás lesz.
Én egy Vmben futtatnám Woody alapokon, ha már kell, fontos. (Ha igazán fontos lenne, ez meg sem történne.)
Amint kiderítettem reggel óta PHP-ban írtak egy felületet, amiből csináltak egy Windows EXE-t, ami csatlakozik az adatbázishoz. A gond az, hogy most nem találok semmi decompiler-t, ami esetleg visszaadná a PHP kódot.
Abban igazad van, hogy ha fontos, akkor nem így kéne, sőt kellett volna ... (Iktató program)
2009-2013 között csinálta egy kolléga, aki már elment nyugdíjba ...
A nyugdíjba ment az nem függvénye annak, hogy esetleg megvannak neki a forráskódok, vagy a fejlesztéshez használt dokumentáció. Ezeket el lehetne kérni. A fejlesztési dokumentáció alapján akár újra lehetne írni az egészet és optimálisabb lenne. A PHP kód szimpla frissítése naprakészre is nagy előrelépés lehetne, de inkább menekülnék ettől a megoldástól, hogy PHP-t Windows-os exe-re fordítgatni egy halott projekttel, amit néhány lelkes ember még fenntart GitHubon, de ott van nagy betűkkel, hogy nem vállal felelősséget, illetve ne haszáld éles környezetben.
Ha nem járható út, akkor marad a Docker, mert ez a Windbiner egy elég halott ötlet volt, nem is élt meg sok időt az eredeti.
"C" terv új iktató rendszerre migrálás. Egy kalkuláció után az is lehet jó megoldás.
Attól, hogy nyugdíjba ment egy kolléga, a forrásnak a cégnél meg kéne lenni... Ha nincs meg, akkor majd a következő saját fejlesztéseknél erre is fognak gondolni, miután meglátják a DB-struktúra és adatok meg a felhasználók emlékezete alapján készült specifikáció alapján, külső fejlesztő által az újraírásra adott árajánlatot... Mert a vége mindenképp egy migrálás kell legyen új környezetre onnan, ami 1024 sebből vérzik... (érdemes megnézni, hogy a használt komponensekben mennyi nem javított hiba/luk van...)
Én egyébként megnézném, hogy van-e funkcionálisan megfelelő iktatórendszer, aminek van jól definiált ősfeltöltés/adat input lehetősége, és megpróbálnám egy ilyenbe migrálni az adatokat.
Be tudsz másolni esetleg valami konkrétabb hibaüzenetet?
Illetve ami még megoldás szokott lenni hasonló esetben, hogyha a MySQL / MariaDB szerver konfigurációjában beállítod a default plugint ezzel a sorral ([mysqld] részben):
Ez nem segített sajnos.
Most nézem, hogy itt valami nem kerek. Az általad írt 5.2.22-es MariaDB verzió elméletileg nem is létezik. Nem írtál el valamit esetleg? Illetve mi a konkrét hibaüzenet, amit ad az app? Annak tudatában egyszerűbben tudnánk segíteni.
A program csak annyit ír, hogy "hibás felhasználónév/jelszó".
Hát akkor még az is könnyen lehet, hogy a kolléga bele hardcodeolt egy felhasználónév / jelszó párost az adatbázis csatlakozáshoz. Nyilván ha nem ilyen néven / jelszóval hoztál létre felhasználót az új DB-ben, akkor nem fog csatlakozni.
Ilyen nincs. Több részletet nem írok le ezzel kapcsolatban, csak annyit, hogy a jogosultságkezelés adatbázis felhasználóval van megoldva, nincs jogosultságokat és felhasználókat tartalmazó tábla.
Igen, én is az adatbázis felhasználóra gondoltam.
RHEL9-ben MariaDB 10.5 és MySQL 8.0 van, 5.2-es nincs (amúgy ilyen mariadb amúgy se létezik).
Domain, tárhely és webes megoldások: aWh
MariaDB 5.2 létezik, 5.2.22 nem, szerintem elirás és 5.5.22 akart lenni, viszont a MariaDB csak nativ passwördöt tud.
- gépi fordításban.
szerk:
- gépi fordításban.
szóval ez sem játszik szerintem mivel a MySQL is 5.5 -volt.
A MariaDB 10.5.22-es verzió, amihez kapcsolódni kellene olyan cuccal, ami 5.5.33-as MySQL-hez tud authentikálni. Így, hogy végigolvastam a kommenteket, halott ötlet ... Marad a program újraírása, amíg ki nem fogyunk az régi ügyekből.
Nem biztos hogy halott, csak a mysql 5.5.23 az 2013-as a MariaDB 10.5.22 meg 2023-as, lehet nem csípi a régi libmysql-t, ennyire távoli verziókat nem probáltam még össze.
Vagy a MariaDB-böl kéne az 5.5.x, vagy lehet próbálkozni a 10.5.22-es MariaDB dll-jével átnevezve libmysql.dll-nek és sürü miatyánkok közepette megpróbálkozni vele, reménykedve hogy nem változtattak az funkcióneveken/funkciókon (99% hogy de).
Illetve meglesném hogy mysql.users táblába van e a kérdéses felhasználóhoz bejegyzés ahol a host vagy '%' vagy a gép címe ahonnan csatlakozni akarsz.
Én Docker-el odottam meg egy viszonylag frissebb Linuxon a Mysql 5.5-öt futtatni. (Delphi 7, ZeosDB nem szereti nagyon a verzióváltást, 5.5-re váltás is körülményes volt, szerencsére a forrás megvolt)
ez igy nekem megy:
ezek szerint mégis összepróbáltam egy frissebb MariaDB klienst (10.11.6) egy MySQL 5.5 szerverrel :), viszont fordítva még nem.
Még amit megtehetsz, hogy a MariaDB szerver error log verbosity értékét felveszed a legmagasabbra és az error logban megnézed, hogy miért nem sikerül a kapcsolódás.
nalam mar pattog a popcorn...
:)
windows dll/exe-ből resource extractot próbáltál?
Csinálsz egy "régi fajta" kapcsolódást, a usernév/jelszavaddal . cli- ben is kipróbálhatod, nem kell webszerveren keresztöl. (/usr/bin/phpx.x kapcsolodás.php )
<?php
// Adatbázis kapcsolat beállításai
$servername = "localhost";
$username = "felhasználónév";
$password = "jelszó";
$dbname = "adatbázis_neve";
// Kapcsolat létrehozása
$conn = mysql_connect($servername, $username, $password);
// Kapcsolat ellenőrzése
if (!$conn) {
die("Kapcsolat sikertelen: " . mysql_error());
}
// Kapcsolat bezárása
mysql_close($conn);
?>
https://blog.claryel.hu
Szisztok!
Most kísérlezetnék CentOS 9-ben docker-t telepítve egy MySQL-lel. Még dockerrrel nem foglalkoztam, így most keresek megfelő csomagot a dockerhub-on.
Ha 5.5-tel próbálkoznék, tudtok ajánlani megfelelőt? Illetve találtam mysql/mysql-server csomagot MySQL 5.7-essel. Ez még kompatibilis lehet az 5.5-tel?
Ott az official image, az miért nem jó? https://hub.docker.com/layers/library/mysql/5.5/images/sha256-d404d78aa…
Domain, tárhely és webes megoldások: aWh
Én a motivációt nem értem: ha nem frissíted az alkalmazást, akkor mitől lesz neked jobb, ha a DB újabb lesz? Ha meg frissíted az alkalmazást, akkor lehet a legújabbra ugrani és kész. Be az egészet VM-be és múkoggyon ameddig tud. Ha meg migrálás lesz, akkor nem kell foglalkozni vele többé. Tényleg nem értem.