mysql linux远程连接失败处理

问题一:远程连接不上mysql,提示Access denied

一、通过下面命令连接不上数据库

mysql -uroot -p
mysql -uroot -h 10.5.122.100 -P 3306 -p

报错信息如下:

ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password: YES)

二、解决方式
1.检查用户权限:检查 root 用户的权限确保它有连接过去的权限,可以通过从另一个可以连接的服务器登录 MySQL 后,执行以下命令来检查权限:

SELECT host, user FROM mysql.user WHERE user='root';

2.发现 root 用户没有连接的权限,需要给予它相应的权限。您可以通过以下步骤来添加连接权限(例子为本地连接):

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'yourpassword' WITH GRANT OPTION;
FLUSH PRIVILEGES;

命令解说:

1.ON .
这指定了权限适用的数据库和表。. 表示所有数据库(第一个星号)的所有表(第二个星号)。
2.TO ‘root’@‘localhost’
这指定了哪个用户将获得这些权限。在这里,它指定了用户名为 root,并且这些权限仅当用户从 localhost(即MySQL服务器所在的本地计算机)连接时有效。
3.IDENTIFIED BY ‘yourpassword’
这指定了用户的密码,替换为实际的密码。
4.WITH GRANT OPTION
这允许该用户进一步授予其他用户权限。
5.FLUSH PRIVILEGES
使所有权限或密码更改立即生效,需要执行这个命令来应用更改。

问题二:远程连接不上mysql,提示caching_sha2_password

一、通过archery等工具连接报错

报错信息如下:

2059,Authentication plugin ‘caching_sha2_password‘ cannot be loaded: /usr/lib64/mysql/plugin/caching_sha2_password.so:no such file or directory

原因:
新版本的MySQL新特性导致,导致认证方式有问题
MySQL 8.0版本默认的认证方式是caching_sha2_password,而像MySQL 5.7版本则为mysql_native_password

二、解决方式
方式一:
修改密码的加密方式,对后续的新建用户有效,而前期的老用户默认密码加密方式还是(caching_sha2_password)
找到my.ini文件,在[mysqld]下添加

default_authentication_plugin=mysql_native_password

方式二:

-- 创建新用户rootnew,设所有ip均可登录,密码root
create user rootnew@'%' identified WITH mysql_native_password BY 'root';
-- grant给hyl赋予所有的库和表的权限。
grant all privileges on *.* to rootnew@'%' with grant option;
-- 刷新
flush privileges;

通过新账号登录成功。。。。飘走了

----编写者:梦想的边缘

实现在嵌入式Linux中用C连接远程MySQL,需要进行以下步骤: 1. 安装MySQL客户端库 在嵌入式Linux中安装MySQL客户端库,可以使用以下命令: ``` sudo apt-get install libmysqlclient-dev ``` 2. 编写C代码 使用MySQL客户端库的C API,可以编写C代码连接远程MySQL。以下是一个简单的示例代码: ``` #include <mysql/mysql.h> int main() { MYSQL *conn; MYSQL_RES *res; MYSQL_ROW row; char *server = "远程MySQL服务器地址"; char *user = "MySQL用户名"; char *password = "MySQL密码"; char *database = "MySQL数据库名"; conn = mysql_init(NULL); if (!mysql_real_connect(conn, server, user, password, database, 0, NULL, 0)) { fprintf(stderr, "%s\n", mysql_error(conn)); return 1; } if (mysql_query(conn, "SELECT * FROM 表名")) { fprintf(stderr, "%s\n", mysql_error(conn)); return 1; } res = mysql_use_result(conn); while ((row = mysql_fetch_row(res)) != NULL) { printf("%s %s\n", row[0], row[1]); } mysql_free_result(res); mysql_close(conn); return 0; } ``` 其中,需要替换以下变量: - 远程MySQL服务器地址:远程MySQL服务器的IP地址或主机名 - MySQL用户名:连接MySQL所使用的用户名 - MySQL密码:连接MySQL所使用的密码 - MySQL数据库名:需要连接的MySQL数据库名 - 表名:需要查询的MySQL表名 3. 编译代码 使用以下命令编译代码: ``` gcc -o program program.c -lmysqlclient ``` 其中,program为编译生成的可执行文件名,program.c为源代码文件名。 4. 运行代码 使用以下命令运行程序: ``` ./program ``` 即可连接远程MySQL并读取数据。 需要注意的是,远程MySQL服务器需要开启远程连接功能,并将连接端口开放,否则连接会失败
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值