I'm trying to connect to a mysql server at dreamhost from a php scrip located in a server at slicehost (two different hosting companies). I need to do this so I can transfer new data at slicehost to dreamhost. Using a dump is not an option because the table structures are different and i only need to transfer a small subset of data (100-200 daily records) The problem is that I'm using the new MySQL Password Hashing method at slicehost, and dreamhost uses the old one, So i get
$link = mysql_connect($mysqlHost, $mysqlUser, $mysqlPass, FALSE);
Warning: mysql_connect() [function.mysql-connect]: OK packet 6 bytes shorter than expected
Warning: mysql_connect() [function.mysql-connect]: mysqlnd cannot connect to MySQL 4.1+ using old authentication
Warning: mysql_query() [function.mysql-query]: Access denied for user 'nodari'@'localhost' (using password: NO)
gerçekler:
- Ben Slicehost de yeni bir yöntem kullanmaya devam etmek gerekir ve ben eski bir php sürümü / kütüphane kullanamazsınız
- Veritabanı dökümü ile her gün transfer için çok büyük
- Ben bunu bile bile, tabloları, farklı yapılara sahip
- Ben (günün sadece değişiklikleri, 100-200 kayıtları) bir günlük bazda, bunun sadece küçük bir kısmını kopyalamak gerekiyor
- Tablo çok farklı olduğu için, ben veri normalleştirmek için bir köprü olarak php kullanmak gerekir
- Zaten googled
- Zaten destek stafs hem konuştuk
Benim için daha bariz seçenek dreamhost de yeni MySQL Şifre Kıyımlama yöntemi kullanmaya başlamak olacaktır, ama bu yüzden bu yapamam kendim bunu değiştirmek olmaz ve ben root değilim.
Herhangi vahşi bir fikir?
VolkerK sugestion by:
mysql> SET SESSION old_passwords=0;
Query OK, 0 rows affected (0.01 sec)
mysql> SELECT @@global.old_passwords,@@session.old_passwords, Length(PASSWORD('abc'));
+------------------------+-------------------------+-------------------------+
| @@global.old_passwords | @@session.old_passwords | Length(PASSWORD('abc')) |
+------------------------+-------------------------+-------------------------+
| 1 | 0 | 41 |
+------------------------+-------------------------+-------------------------+
1 row in set (0.00 sec)
The obvious thing now would be run a mysql> SET GLOBAL old_passwords=0; But i need SUPER privilege to do that and they wont give it to me
Ben sorguyu çalıştırırsanız
SET PASSWORD FOR 'nodari'@'HOSTNAME' = PASSWORD('new password');
Ben hata alıyorum
ERROR 1044 (42000): Access denied for user 'nodari'@'67.205.0.0/255.255.192.0' to database 'mysql'
Ben kök değilim ...
The guy at dreamhost support insist saying thet the problem is at my end. But he said he will run any query I tell him since it's a private server. So, I need to tell this guy EXACTLY what to run. So, telling him to run
SET SESSION old_passwords=0;
SET GLOBAL old_passwords=0;
SET PASSWORD FOR 'nodari'@'HOSTNAME' = PASSWORD('new password');
grant all privileges on *.* to nodari@HOSTNAME identified by 'new password';
iyi bir başlangıç olurdu?