PDA

View Full Version : perl problem


audioblivious
02-28-2008, 03:58 AM
im have a time with this perl it doesnt have the dbd-mysql in the list and to top it off the server says perl isnt install what do i do?

audioblivious
02-28-2008, 05:33 AM
ok i got the perl out the way now it wont connect to the db ... its there and in xml but server dont see it and port is open

Derision
02-28-2008, 09:10 AM
ok i got the perl out the way now it wont connect to the db ... its there and in xml but server dont see it and port is open

You need to post your eqemu_config.xml and the world & zone logs showing the error messages you are getting.

sdtuasrt, MD
02-29-2008, 04:08 PM
I am having this exact same problem. I used to have a private EQEMU server some time ago, and now that I have a new computer, I attempted to reinstall EQEMU.

I have Perl Installed. However, EQEMU cannot connect to the Database. The only error message in the Log File is the following:
[02.29. - 23:02:06] Failed to connect to database: Error: #1251: Client does not support authentication protocol requested by server; consider upgrading MySQL client

world.exe dies after that.

sdtuasrt, MD
02-29-2008, 04:11 PM
Apologies for double-post. This is exactly what world.exe outputs when run.

C:\>cd EQEmu-0.7.0-1102

C:\EQEmu-0.7.0-1102>world.exe
[Debug] Starting Log: logs/eqemu_debug_world_11816.log
[Debug] [WORLD__INIT] Loading server configuration..
[Debug] [WORLD__INIT] Log settings loaded from log.ini
[Debug] [WORLD__INIT] CURRENT_WORLD_VERSION:EQEMu 0.7.0
[Debug] [WORLD__INIT] Connecting to MySQL...
[Error] Starting Log: logs/eqemu_error_world_11816.log
[Error] Failed to connect to database: Error: #1251: Client does not support aut
hentication protocol requested by server; consider upgrading MySQL client
[Debug] [WORLD__INIT_ERR] Cannot continue without a database connection.

C:\EQEmu-0.7.0-1102>

sdtuasrt, MD
02-29-2008, 04:31 PM
Oops. Ignore above two posts. Upon further investigation, I have determined that the problem is due to the version of ActivePerl which is recommended by the guide no longer offering downloads of the required Perl files -- particularly DBD::mysql and DBI.

I would suggest that someone alter the guide to remove reference to an outdated, non-functional distribution.

sdtuasrt, MD
02-29-2008, 04:48 PM
Downloaded C++ compiler and attempted to install the required modules with CPAN. No luck. They will not compile.

Can anyone suggest an alternative to ActiveState perl? Or can anyone offer the required perl parts precompiled for x86 Windows?

audioblivious
02-29-2008, 05:30 PM
so its the perl causing this error?

sdtuasrt, MD
02-29-2008, 06:09 PM
It seems to be so, yes.

Since the only part of the installation that went wrong was my inability to acquire the PERL mysql interface, due to the fact that the Guide provided is out of date, and since using updated versions of PERL and the mysql related interfaces do not work, I can only assume that the problem lies with PERL, or, more specifically, that it seems PERL is required for EQEmu to connect to a mysql database. There is no actual database problem, as my database works, and I am able to connect to it, and other programs are able to use it just fine.

Derision
02-29-2008, 08:37 PM
I am having this exact same problem. I used to have a private EQEMU server some time ago, and now that I have a new computer, I attempted to reinstall EQEMU.

I have Perl Installed. However, EQEMU cannot connect to the Database. The only error message in the Log File is the following:
[02.29. - 23:02:06] Failed to connect to database: Error: #1251: Client does not support authentication protocol requested by server; consider upgrading MySQL client

world.exe dies after that.

For this problem I think you need to run the SQL command provided by Angelox in this thread:

http://www.eqemulator.net/forums/showthread.php?t=24233

I don't think it's anything to do with Perl.

audioblivious
03-01-2008, 12:28 PM
tried that with all users including root says cant find any matching row in the user table

Fridgecritter
03-02-2008, 05:04 AM
Ok, Here's the deal. I am running Mysql 5xx and the newest Perl distro with the GUI PPM on mine, and it works just fine. The mySQL component you need is called something different in the new GUI based PPM. It's called DBIx-MySQLSequence. The other two components (the IO stringy and the other) are still called the same thing. Once you make sure those three are installed, you are done with perl and it works.

The password fix in the post WORKS. You CAN use MySQL 5xx because I am using it now with no problems. Run that query and you should have no problems. If that doesn't work, then the problem is something else, or you are not running the query correctly. Hope that helps.

audioblivious
03-02-2008, 06:37 AM
ok i have dbix mysql the problem im having now is sql when i try that command user not found

Fridgecritter
03-02-2008, 08:12 AM
you have to run it with the user name in the query that you use to access your database. If it's root, then change it to root, etc..

audioblivious
03-02-2008, 08:31 AM
you have to run it with the user name in the query that you use to access your database. If it's root, then change it to root, etc..

thats what did

audioblivious
03-02-2008, 10:32 AM
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'mysql> UPDATE `user` SET Password=old_password('hire') WHERE Host='localhost' an' at line 1

is what i get

audioblivious
03-02-2008, 10:43 AM
when i use :


SET PASSWORD FOR 'eqemu'@'localhost' = OLD_PASSWORD('hire');
i get this :#1133 - Can't find any matching row in the user table


when i use :mysql> UPDATE `user` SET Password=old_password('hire') WHERE Host='localhost' and User='eqemu';

i get this :#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'mysql> UPDATE `user` SET Password=old_password('hire') WHERE Host='localhost' an' at line 1
now what??

kiirdiir
03-05-2008, 07:36 AM
when i use :

SET PASSWORD FOR 'eqemu'@'localhost' = OLD_PASSWORD('hire');
i get this :#1133 - Can't find any matching row in the user table


when i use :mysql> UPDATE `user` SET Password=old_password('hire') WHERE Host='localhost' and User='eqemu';

i get this :#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'mysql> UPDATE `user` SET Password=old_password('hire') WHERE Host='localhost' an' at line 1
now what??

Error #1133: No such user, eqemu, is about all I can see for that.

Error #1064: Syntax. Note the difference in single quotes surrounding user vs hire/localhost/eqemu. (` vs '. Use '.)

Fridgecritter
03-05-2008, 01:33 PM
Ok, here is what you do...

Let's say your user that accesses the database for your server is "root".

You run this code:

set password for 'root'@'localhost' = OLD_PASSWORD('newpwd');

Now, where it says 'newpwd' you change that to the password that you already have. When you set up MySQL with the password '121212' for root, then the code should look like this:

set password for 'root'@'localhost' = OLD_PASSWORD('121212');

If your username for the server is different than 'root' and it is something like '12user12' and your pass is '121212' then the code should look like this:

set password for '12user12'@'localhost' = OLD_PASSWORD('121212');

If you are having trouble doing this in the console, then you should use the console in a program like Navicat. You install Navicat and then setup the connection, then go to "tools" from the file menu, and click on "console..." or just hit the F6 key on your keyboard while the Navicat program is the active window.

Copy and paste your code into the console and hit the "Enter" key on the keyboard, and it should give you a message saying 0 rows effected or something to that effect.

That worked for me.

Secrets
03-05-2008, 02:42 PM
In addition to the above, i'd like to put this out here for reference.

The only reason you're getting a user not found error is because you're trying to set a password for a non-existant user.

You can do this in three simple queries:

create user eqemu;

^ creates the user

grant all on *.* TO 'eqemu'@'localhost';

^ makes it root

flush privileges;


That will set up user eqemu. Now, you can go ahead and do the things listed in the post above me.

Since there's no password for our new user, you need to set one. (Well, you don't, but it helps, right?)

Replace newpwd with the password you want, do not delete the ' marks.


set password for 'root'@'localhost' = OLD_PASSWORD('newpwd');

Got that?

After that is done, use the username and password you JUST created for your server, and it will boot up.

Good job, you fixed your username problem, remember to edit eqemu_config.xml, use the guide on the wiki to edit the eqemu_config.xml

YOU CANNOT RUN A SERVER WITHOUT DOING THAT.

sidenote:

This is also a good idea for people who don't want to have a root account used for everything, or allowing root access to other machines, simply replace the hostname and grant privileges, and you can use another machine to run the game server, similar to a server "farm".

Fridgecritter
03-17-2008, 01:59 AM
Or just open Navicat and click on manage users, then create new user, and click on grant all. Then make the host "%" so you can access the machine from any host. Same thing done a different way.