MYSQL常见错误及其解决方式

时间:2023-03-08 16:17:16

欢迎和大家交流技术相关问题:
邮箱: jiangxinnju@163.com
博客园地址: http://www.cnblogs.com/jiangxinnju
GitHub地址: https://github.com/jiangxincode
知乎地址: https://www.zhihu.com/people/jiangxinnju

  • ERROR 1130: Host 10.0.0.1 is not allowed to connect to this MySQL server

在用远程连接MySQL服务器的数据库,不管怎么弄都是连接不到,错误代码是1130,ERROR 1130: Host 10.0.0.1 is not allowed to connect to this MySQL server
猜想是无法给远程连接的用户权限问题。结果这样子操作MySQL库,即可解决。在本机登入MySQL后,更改 “mysql” 数据库里的 “user” 表里的 “host” 项,从”localhost”改称'%'。
mysql -u root -p
use mysql;
select 'host' from user where user='root';
update user set host = '%' where user ='root';
flush privileges;
select 'host' from user where user='root';
第一句是以权限用户root登录;第二句:选择mysql库;第三句:查看mysql库中的user表的host值;第四句:修改host值(以通配符%的内容增加主机/IP地址),当然也可以直接增加IP地址;第五句:刷新MySQL的系统权限相关表;第六句:再重新查看user表时。重启mysql服务即可完成。

  • ERROR 1044 (42000):Access denied for user

这个问题主要是因为授权用户本身的权限不足引起的。我们以root用户为例,需要注意到地方有以下几个方面:
1.MySQL的user表很重要。必须保证root用户在user表里面有两条记录,也就是
root localhost ……..
root 127.0.0.1 …….
2.保证root用户拥有所有权限,也就是user表里面的所有字段里面对应的内容是Y
3.在my.ini后者my.cnf里面有这个配置项的时候
bind-address=localhost
启用这个配置项可以保证安全
4.在服务器上运行MySQL的时候,为了安全起见,尽量不要给user表里面的host字段赋予%权限。
保证以上几点没有问题的情况下,这个错误基本可以避免。
另外如果用户不能进入mysql系统,可以用这种方法进入:如果 MySQL 正在运行,首先停止。启动 MySQL :bin/safe_mysqld --skip-grant-tables &
就可以不需要密码就进入 MySQL 了。然后就是
use mysql
update user set password=password("new_pass") where user="root";
flush privileges;

  • Error: 1265 SQLSTATE: 01000 (WARN_DATA_TRUNCATED

一、字符长度太短;
二、乱码,更改统一的字符类型,比如更改字符类型为utf8;
三、如果是 Enum,则可能是添加的字符不在enum类型范围内;
四、另一可能是在alter table更改列设置时,影响原来存入的值,这时可将原值update为需要的类型值或删除这些原值再alter table