mysql 基本使用 问题排查

一、host '' is not allowed to connect to this Mysql server

原因:没有打开远程访问

1、远程链接服务器,在服务器内mysql系统目录下的/bin文件下执行./mysql -u root -p;输入密码登入mysql;
2、在mysql中执行use mysql命令,进入系统数据库

 3、在mysql数据库中执行  update user set host = '%' where user = 'root';;如果返回结果如下图:

 该结果表示是由于当前的root用户限制在当前的内网ip内访问的,需要修改他的访问域。

4、在mysql数据库中执行 update user set host = ‘%’ where user = ‘root’;
5、FLUSH PRIVILEGES; 这个命令是刷新MySQL的权限相关表

二、解决另一台机器连接

1.防火墙中给端口3306设置一个特定的开放端口(创建入站规则)

2.配置文件 [ysqld] 部分增加内容:

有配置文件名:my.cnf,有些叫my.ini

#将bind-address参数的值修改为0.0.0.0或者服务器的IP地址
bind-address = 0.0.0.0

3.上面的那个%权限

二、调用 SSPI 失败,请参见内部异常。

原因分析:

据查此问题因mysql数据库没有安装ssl证书导致。

解决分析:

连接字符串中加上“SslMode=none”;。

string connectStr = "server=127.0.0.1; User Id=root; password=123456; Database=studentdb;SslMode=none;Charset=utf8";

三、调用 SSPI 失败,请参见内部异常。

字符集 创建库指定字符集

 create database database_name default charset utf8;

其他处理:

https://blog.csdn.net/YSTWD_WY/article/details/124193675

 

四、给定关键字不在字典中  The given key was not present in the dictionary.

解决方法:

https://www.cnblogs.com/xbding/p/12680490.html

五、Client does not support authentication protocol requested by server; consider upgrading MySQL client

参见:https://zhuanlan.zhihu.com/p/433298885

mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password,所以可以升级navcat的版本或者改变mysql的加密规则

我是用的将mysql的加密规则给改了,觉得navcat升级有点麻烦,还要破解。

步骤: 先登录mysql,mysql -u root -p"123456"

1 查看mysql的版本发现是8以后的,所以加密规则会变

select version();

2 修改加密方式 ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;

这里的password是你正在使用的密码

注意!!!(这破地方我给忽略了,找了好一会才发现这错了)我的localhost权限是% 所以我执行的是>ALTER USER 'root'@'%' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;

下面同样注意localhost

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

这是更新一下用户的密码这里的password为你修改的新密码。 如果提示密码unsafe ,就是密码格式不对,多试试。 

然后 

FLUSH PRIVILEGES; 刷新权限,让修改生效。
再次使用navcat连接 成功!!!记得密码是刚才设置的新密码!

 六、ASCII '\0' appeared in the statement

登入的时候加--binary-mode=1

mysql --binary-mode=1 -hlocalhost -P3306 -uroot -padmin jvmi<D:\myWork\jtc\jvmi_20220731.sql

 七、at line 161: Unknown command '\''.

mysql --binary-mode=1 -hlocalhost -P3306 -uroot -p1qaZxsw2 --default-character-set=utf8 jwmshk<D:\jwmshk_20220907.sql

 八、有时候发现有些视图在其他地方好的,导入到本地发现运行报错了。

      原因:MySQL 5.7.5和up实现了对功能依赖的检测。如果启用了only_full_group_by SQL模式(在默认情况下是这样),那么MySQL就会拒绝选择列表、条件或顺序列表引用的查询,这些查询将引用组中未命名的非聚合列,而不是在功能上依赖于它们。(在5.7.5之前,MySQL没有检测到功能依赖项,only_full_group_by在默认情况下是不启用的。关于前5.7.5行为的描述,请参阅MySQL 5.6参考手册。)

       查看:查看当前sql模式 

select @@sql_mode; 

    解决:使用如下脚本,或用上面代码查看没问题的机器模式,将值改成与没有问题机器相同即可

set global sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
set session sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

    重启后被恢复:

  windows环境。只需要在my.ini中加入 

[mysqld]
sql_mode =STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

 

posted @ 2022-07-17 13:53  丁焕轩  阅读(1260)  评论(0编辑  收藏  举报