PHP 5 连接 mysql 5 的认证协议问题

mysql|问题

MYSQL 4.1以后, 采用了一种新的用户认证协议, 对于老的客户端会出现不支持认证协议的错误, 以下是官方网站的解决方法﹔

1Upgrade all client programs to use a 4.1.1 or newer client library.

更新客户端库,这需要更新PHP的扩展库,对于老的api PHP已经不提供了这样的扩展库了

2When connecting to the server with a pre-4.1 client program, use an account that still has a pre-4.1-style password.

使用以前建立的账号连接,对于在新的认证协议下建立的账户就不行了

3Reset the password to pre-4.1 style for each user that needs to use a pre-4.1 client program. This can be done using the SET PASSWORD statement and the OLD_PASSWORD() function: mysql> SET PASSWORD FOR

-> 'some_user'@'some_host' = OLD_PASSWORD('newpwd');

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

mysql> FLUSH PRIVILEGES;

Substitute the password you want to use for ``newpwd'' in the preceding examples. MySQL cannot tell you what the original password was, so you'll need to pick a new one.

这是一个不错的办法,新建立的账号采用老式的加密协议

4Tell the server to use the older password hashing algorithm:

Start mysqld with the --old-passwords option.

这样新认证协议的优点就没法使用了

5Assign an old-format password to each account that has had its password updated to the longer 4.1 format. You can identify these accounts with the following query: mysql> SELECT Host, User, Password FROM mysql.user

-> WHERE LENGTH(Password) > 16;

For each account record displayed by the query, use the Host and User values and assign a password using the OLD_PASSWORD() function and either SET PASSWORD or UPDATE, as described earlier.

时间: 2024-10-27 04:56:09

PHP 5 连接 mysql 5 的认证协议问题的相关文章

PHP5连接Mysql5的认证协议问题

mysql|php5|问题 MYSQL 4.1以后, 采用了一种新的用户认证协议, 对于老的客户端会出现不支持认证协议的错误, 以下是官方网站的解决方法﹔ 1Upgrade all client programs to use a 4.1.1 or newer client library. 更新客户端库,这需要更新PHP的扩展库,对于老的api PHP已经不提供了这样的扩展库了 2When connecting to the server with a pre-4.1 client progr

Python连接mysql数据库

 首先你要做的还是下载相应的模块并且安装啦,下载地址自己搜,网上有很多,安装的话也很好办,安装之后python的安装目录下的Lib文件夹下的site-packages文件夹下的MySQLdb文件夹,这之中存放的便是该模块的定义.准备工作做好之后我们需要在源码中import MySQLdb 数据库的连接: 模块引入之后我们就需要和数据库进行连接了,实例代码如下: db = MySQLdb.connect("localhost","root","123456&

有关jsp-JavaScript + web service 连接mysql

问题描述 JavaScript + web service 连接mysql 如何实现?最好能有实例.比如说,mysql中有一个test数据,我想让html文件读取数据库的内容,用上述方法,如果有别的方法也可以,求详细例子.本人小白,各位大哥求帮助 解决方案 javascript是通过post等请求调用web service API.而web service内部再调用mysql,取决于你用什么实现的web service,那么一般都有对应类库调用musql 然后web service返回结果给js

PHP下使用mysqli的函数连接mysql出现warning: mysqli::real_connect(): (hy000/1040): ..._php实例

背景:把mysql换成mysqli时出现,连接数过多,其实际上并不是,原因是我挪动了一下php的sock文件位置导致,因这几个socket修改没有修改完全,于是出现了too many connections ,从mysql里show processlist并没有发现真的有连接,其实用tshark抓下包估计能看到(http://justwinit.cn/post/7458/),并没有发出请求,而估计是mysqli的客户端自己报出来的,别看这个问题小,搞了老半天,都想重新安装Php了,发现原来是路径

《MySQL技术内幕:InnoDB存储引擎第2版》——1.5 连接MySQL

1.5 连接MySQL 本节将介绍连接MySQL数据库的常用方式.需要理解的是,连接MySQL操作是一个连接进程和MySQL数据库实例进行通信.从程序设计的角度来说,本质上是进程通信.如果对进程通信比较了解,可以知道常用的进程通信方式有管道.命名管道.命名字.TCP/IP套接字.UNIX域套接字.MySQL数据库提供的连接方式从本质上看都是上述提及的进程通信方式.1.5.1 TCP/IP TCP/IP套接字方式是MySQL数据库在任何平台下都提供的连接方式,也是网络中使用得最多的一种方式.这种方

数据库-小白 求大神解答 eclipse连接mysql语句改成连接sql2008

问题描述 小白 求大神解答 eclipse连接mysql语句改成连接sql2008 package library; import javax.swing.*; import java.sql.*; public class Database{ private String url = "jdbc:mysql://localhost/library";// //private String url = "jdbc:mysql://localhost:3306/library&

c++连接mysql数据库的两种方法(ADO连接和mysql api连接)_C 语言

第一种方法可以实现我当前的需求,通过连接不同的字符串来连接不同的数据库.暂时只连接了mysql,sqlserver,oracle,access.对于access,因为它创建表的SQL语句不太兼容标准SQL语句,需要做一些处理,这里暂时不说.第二种方法只能针对于mysql数据库的连接,不过用这种方法不用安装MyODBC服务器程序. 不管用哪种方法,首先需要安装Mysql数据库,安装方法请看"mysql安装及一些注意点".最好安装一个Navicat for mysql,方便操作mysql数

JDBC连接MySQL数据库及演示样例

JDBC是Sun公司制定的一个能够用Java语言连接数据库的技术. 一.JDBC基础知识 JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,能够为多种关系数据库提供统一訪问,它由一组用Java语言编写的类和接口组成.JDBC为数据库开发者提供了一个标准的API,据此能够构建更高级的工具和接口,使数据库开发者能够用纯 Java API 编写数据库应用程序,而且可跨平台执行,而且不受数据库供应商的限制. 1.跨平台执行:

让Vsftpd的虚拟用户使用MySQL进行用户认证

让Vsftpd的虚拟http://www.aliyun.com/zixun/aggregation/6579.html">用户使用MySQL进行用户认证,可以方便的在一台机子上拥有上千个ftp账户,可以使用phpmyadmin来管理数据库. 安装vsftpd.mysql和phpmyadmin Vsftp没有内置的MySQL支持,所以我们必须使用PAM来认证: sudo apt-get install vsftpd libpam-mysqlmysql-server mysql-client