查看: 8193|回复: 2
打印 上一主题 下一主题

phpmyadmin连接Mysql问题集解

[复制链接]
跳转到指定楼层
1#
发表于 2007-9-21 20:39:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
台州网址导航
1.出现“没有发现 PHP 的扩展设置mbstring, 而当前系统好像在使用宽字符集。没有 mbstring 扩展的 phpMyAdmin 不能正确识别字符串,可能产生不可意料的结果.”

解决方法:

win系统:

打开c:\windows\php.ini

;extension=php_mbstring.dll
改成
extension=php_mbstring.dll

unix:
打开/etc/php.ini

;extension=php_mbstring.so
改成
extension=php_mbstring.so



2.登入时出现:“#1251 - Client does not support authentication protocol requested by server; consider upgrading MySQL client”

问题的中文意思:如果你升级mysql到4.1以上版本后遇到以上问题,请先确定你的mysql client 是4.1或者更高版本.(WINDOWS下有问题你就直接跳到下面看解决方法了,因为MYSQL 在WINDOWS是client和server一起装上了的)

解决方法:

请使用以下四种方法之一

其一:

mysql> SET PASSWORD FOR
    -> 'some_user'@'some_host' = OLD_PASSWORD('newpwd');


实例:mysql数据库用户名为'abc',密码为'123456',则按上面例子在服务器mysql命令行窗口中实际实施的语句如下:
mysql> SET PASSWORD FOR
    -> 'abc'@'localhost' = OLD_PASSWORD('123456');


注意语句后的英文半角分号";"不可缺少。

其二:

mysql> UPDATE mysql.user SET Password = OLD_PASSWORD('newpwd')
    -> WHERE Host = 'some_host' AND User = 'some_user';
mysql> FLUSH PRIVILEGES;


实例:mysql数据库用户名为'abc',密码为'123456',则按上面例子在服务器mysql命令行窗口中实际实施的语句如下:


mysql> UPDATE mysql.user SET Password = OLD_PASSWORD('123456')
    -> WHERE Host = 'localhost' AND User = 'abc';
mysql> FLUSH PRIVILEGES;

注意语句后的英文半角分号";"不可缺少。
其三:(推荐,其实和第二种是一样的) mysql> UPDATE mysql.user SET Password = OLD_PASSWORD('连接用户的密码')       -> WHERE User = '要连接的用户名';mysql> FLUSH PRIVILEGES; 实例:mysql数据库用户名为’abc’,密码为'123456',则按上面例子在服务器mysql命令行窗口中实际实施的语句如下: mysql> UPDATE mysql.user SET Password = OLD_PASSWORD('123456')     -> WHERE User = 'abc'; mysql> FLUSH PRIVILEGES; 注意语句后的英文半角分号";"不可缺少。 其四:更新PHP里MySQL模块的版本以支持新版本的MySQL
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖
台州维博网络(www.tzweb.com)专门运用PHP+MYSQL/ASP.NET+MSSQL技术开发网站门户平台系统等。
2#
 楼主| 发表于 2007-9-21 20:39:25 | 只看该作者
台州网址导航
在使用phpMyAdmin-2.6.0以上版本进行数据库管理操作时,页面上显示的中文为乱
码。更改页面的语言设置和连接校对都没有作用,依然显示乱码。

在MySQL-4.0以上和phpMyAdmin-2.6.0以上版本组合中,会出现以上问题;在MySQL
-3.x和任意版本phpMyAdmin,或者phpMyAdmin-2.6.0一下(含2.6.0)和任意版本
MySQL不会出现上述问题。


造成以上问题的原因在于,数据库存储时的字符集,和phpMyAdmin认为的数据库字
符集,以及页面显示的字符编码没有对应到正确的值。

例如:在prima中,数据库内容的字符集为gb2312,数据库字符集是默认的
latin1,这样的数据库内容在小于等于phpMyAdmin- 2.6.0上显示没有问题,但是
在phpMyAdmin-2.6.0以上版本,默认数据库字符集都是utf-8,这时就产生了上述
问题。

所以,解决问题的关键,是把这几个值都设置成相应的正确的值。

3. 问题解决:

为了便于描述,这里拿prima来作为示例。当用户自己升级了phpMyAdmin到2.6.0以
上版本之后,登录之后发现中文都变成了乱码,但是,这时站点页面上的显示是正
常的。这是,只需要改phpMyAdmin文件中的两处,即可解决。

1) 在libararies/select_lang.lib.php文件中,找到$mysql_charset_map的赋值
段,将其中的'gb2312' => 'gb2312'改为'gb2312' => 'latin1';
2) 在libararies/select_lang.lib.php文件中,找到$available_languages赋值
段,将'zh- gb2312' => array('zh|chinese simplified', 'chinese_simplified-gb2312', 'zh')改为'zh-gb2312-utf-8' => array('zh|chinese simplified', 'chinese_simplified-gb2312', 'zh')

修改之后,保存文件,这时登录phpMyAdmin,语言选择的时候,选择Chinese
simplified (zh-gb2312-utf-8),然后在查看数据库,这时就正常了。

4. 说明:

原则上,只需要做以上修改步骤中的第一步就可以解决问题。因为已经确定了正确
的内容字符集和数据库字符集的对应关系。phpMyAdmin中,数据库字符集是和语言
选择相关联的,所以这时只要选择Chinese simplified (zh-gb2312)就可以了。但
是,由于phpMyAdmin的设计,在页面上并不能显示出非utf-8的语言字符集选项,
所以,需要对$ available_languages进行修改。将zh-gb2312后边加上utf-8使页
面能显示出这个选项,需要使用时,选择Chinese simplified (zh-gb2312-utf-
8)。经测试,修改之后,用phpMyAdmin查看和修改数据库都没有问题,页面使用
gb2312字符编码。

5. 结论:

以上只是通过prima来说明问题,其他情况可以参照以上方法解决,无非是数据库
字符集和页面显示字符集的设定。
台州维博网络(www.tzweb.com)专门运用PHP+MYSQL/ASP.NET+MSSQL技术开发网站门户平台系统等。
3#
 楼主| 发表于 2007-9-21 20:39:38 | 只看该作者
台州网址导航
本文讲述如果解决 phpMyAdmin 高版本数据表里中文字符显示乱码的问题。

先说一下我数据库的情况。
MySQL 版本:5.0.26
MySQL 默认字符集:latin1
论坛数据库字符集:latin1
phpMyAdmin 版本:2.9.0.2

使用 phpMyAdmin 打开我的数据库后,发现数据表里的中文全是全是乱码,不管如何改变 phpMyAdmin 所使用的语言都无济于事。
仔细研究一下,发现 phpMyAdmin 默认显示的网页编码是 Unicode UTF-8 ,查看当前 IE 浏览器所使用的编码也就是 Unicode (UTF-8)。

所以我想让页面编码变为 GB2312,当然啦,强行指定 IE 使用的字符集是不行的。目的是要让 phpMyAdmin 吐出 GB2312 编码。

下面是我的修改过程:
打开 phpMyAdmin 根目录中 libraries/select_lang.lib.php 文件;
找到:
CODE:

'zh-gb2312'         => array('zh|chinese simplified', 'chinese_simplified-gb2312', 'zh', '中文'),
将其改为:
CODE:

'zh-gb2312-utf-8'         => array('zh|chinese simplified-UTF8', 'chinese_simplified-gb2312', 'zh', '中文'),
再找到:
CODE:

'gb2312'       => 'gb2312',
将其改为:
CODE:

'gb2312'       => 'latin1',
保存文件退出。

然后从浏览器打开 phpMyAdmin ,在首页选择 Language 为:中文 -Chinese simplified-UTF8

然后打开数据表看看里面的中文是不是已经可以正常显示了:)

注意:我数据库的字符集是 latin1 ,如果你的数据库字符集不是 latin1,那要酌情改动一下修改过程。'gb2312'    => 'your_character_code',
台州维博网络(www.tzweb.com)专门运用PHP+MYSQL/ASP.NET+MSSQL技术开发网站门户平台系统等。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

网站推广
关于我们
  • 台州朗动科技(Tzweb.com)拥有多年开发网站平台系统门户手机客户端等业务的成功经验。主要从事:政企网站,系统平台,微信公众号,各类小程序,手机APP客户端,浙里办微应用,浙政钉微应用、主机域名、虚拟空间、后期维护等服务,满足不同企业公司的需求,是台州地区领先的网络技术服务商!

Hi,扫描关注我

Copyright © 2005-2026 站长论坛 All rights reserved

Powered by 站长论坛 with TZWEB Update Techonolgy Support

快速回复 返回顶部 返回列表