gpt4 book ai didi

mysql - 用户可以通过 PDO 连接,但不能通过 C mysql_real_connect 连接

转载 作者:行者123 更新时间:2023-11-29 20:40:04 37 4
gpt4 key购买 nike

我在本地计算机上管理 MySQL 数据库,并通过运行以下程序通过 C 连接到它:

#include <stdio.h>
#include <stdlib.h>

#include <mysql/mysql.h>

int main(int argc, char** argv ) {
my_init();

printf("MySQL client version: %s\n", mysql_get_client_info());

MYSQL mysql;

printf( "%p\n", &mysql );

MYSQL* mysql_initiate = mysql_init(&mysql);

printf( "%p\n", mysql_initiate );

MYSQL* attempt = mysql_real_connect(&mysql, "localhost","User","********","DB",0,NULL,0);

printf( "%p\n", attempt );

if(attempt != NULL) {
printf("OK\n");
}
else {
printf("Error: %s\n", mysql_error(&mysql));
}

mysql_close(&mysql);

return 0;
}

它是由以下命令编译的:

gcc -c `mysql_config --cflags` main.c
gcc -o a.run main.o `mysql_config --libs`

哪里mysql_config --cflags输出

-I/usr/include/mysql -DBIG_JOINS=1  -fno-strict-aliasing    -g -DNDEBUG

mysql_config --libs输出

-L/usr/lib/x86_64-linux-gnu -lmysqlclient -lpthread -lz -lm -ldl

程序编译正常,但执行时输出:

MySQL client version: 5.5.50
0x7fffcb8403e0
0x7fffcb8403e0
(nil)
Error: Access denied for user 'User'@'localhost' (using password: YES)

当前线程的用户名、密码和数据库名称已更改。

PHP 使用实际的名称和密码三元组成功连接,因此用户的凭据不是问题的原因。我从 PHP 代码到 C 代码进行了简单的复制粘贴,字符串中没有不准确的地方。

同样的问题发生在以下情况:

  • 尝试以 root 身份连接,
  • 尝试授予用户所有可能的权限,
  • 尝试使用测试用户,通过单字母密码授予所有权限,
  • 更改了变量 mysqlmysql_initiate进入blipblop (如果发生了一些奇迹般的未被发现的碰撞)。

当我运行可执行文件时,Apache 服务器启动,以证明我可以连接到 phpmyadmin。我从 phpmyadmin 注销后尝试过,同样的问题。当我输入 NULL 时,会出现同样的问题而不是"localhost" ,当我输入端口 3306 时(这是 MySQL 端口,由 netstat -natp 告知)而不是 0 .

为什么User可以通过PHP连接数据库而不能通过C连接数据库?

我已经用谷歌搜索了这个问题,但没有任何关于该主题的内容。

gcc的版本是

gcc (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4

我在 Linux Mint 17 Qiana 下运行。MySQL 通过 XAMPP 7.0.6-0 进行管理,数据库通过 phpmyadmin 进行管理,具有以下版本和配置(数据从 phpmyadmin 欢迎页面检索):

数据库服务器:

服务器:通过 UNIX 套接字的本地主机

服务器类型:MariaDB

服务器版本:10.1.13-MariaDB - 源代码分发

协议(protocol)版本:10

用户:root@localhost

服务器字符集:UTF-8 Unicode (utf8)

网络服务器:

Apache/2.4.18 (Unix) OpenSSL/1.0.2h PHP/7.0.6 mod_perl/2.0.8-dev Perl/v5.16.3

数据库客户端版本:libmysql - mysqlnd 5.0.12-dev - 20150407

PHP 扩展:mysqli

PHP版本:7.0.6

我被困在墙上,感谢任何帮助。

如果您需要一些额外信息,请随时询问。

提前致谢。

最佳答案

之前我浏览过类似的问题,并了解到其他一些用户已经通过删除 XAMPP 解决了他们的问题。我不知道这也是我的情况。在诉诸这样的结局之前,我想尝试其他事情。

我了解到一些有关设置/更改 root 密码的 XAMPP 脚本已被弃用。

我已经摆脱了 XAMPP。当涉及到 MySQL 用户及其权限时,XAMPP 会以某种方式破坏 MySQL 数据库。

此外,我还卸载了mysql、apache等,然后“手动”重新安装了它们。它有效。

我现在才看到该页面:

https://community.apachefriends.org/f/viewtopic.php?f=16&t=72519

也许它可以解决我的问题,也许不能。不管怎样,我不建议再使用XAMPP。

关于mysql - 用户可以通过 PDO 连接,但不能通过 C mysql_real_connect 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38663574/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com