数据库各种问题

MySQL连接报错 1130

用户客户端连接非本地的mysql服务时报错,错误提示 ERROR 1130: Host xxx.xxx.xxx.xxx is not allowed to connect to this MySQL server

解决方案: 

1. 在服务器中登录mysql(安装目录下,bin下)

./mysql -u root -p 

2. 进入mysql数据库

mysql> use mysql;

3. 查看user 表host 字段(可选)

mysql> select host,user from user;

4. 修改host值(以“%”通配符,增加在主机/ip地址),当然也可以增加一条数据

mysql> update user set host='%' where user='root';

5. 刷新mysql系统权限相关表

mysql> flush privileges;

6.重启mysql服务(确保修改生效)


 报错超过最大连接数

执行以下sql,

update user set max_questions=0;
flush privileges;


 

mysql下的user表为空


1、首先修改my.cnf文件里面的sql_mode值,因认5.6之后的默认值就是下面的两个
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
需要把STRICT_TRANS_TABLES去掉,即改为:

# vi /usr/local/mysql/my.cnf

sql_mode=NO_ENGINE_SUBSTITUTION


注:
简单来说STRICT_TRANS_TABLES这个是启用严格模式,进入安全模式后如果启用了严格模式向表插入数据插入不了的;
my.cnf的位置:/usr/local/mysql/my.cnf

2、停止mysql服务

# service mysql stop

以安全模式启动MySQL
# mysqld_safe –skip-grant-tables &
在另一个终端登录mysql
# mysql -uroot -p
回车后提示输入密码,不需要输入密码,直接回车就可以进入mysql

3、查看下有几个实例
mysql> show databases;
使用mysql实例
mysql> use mysql;
查看有多少表
mysql> show tables;
查看user表有没有数据
mysql> select * from user;

4、向user表插入root用户
INSERT   INTO   user   (Host,User,Password)   VALUES( 'localhost', 'root',password( '123456'));

5、更新root用户权限
mysql> update user set
Host='localhost',select_priv='y', insert_priv='y',update_priv='y',Alter_priv='y',delete_priv='y',create_priv='y',drop_priv='y',reload_priv='y',shutdown_priv='y',Process_priv='y',file_priv='y',grant_priv='y',References_priv='y',index_priv='y',create_user_priv='y',show_db_priv='y',super_priv='y',create_tmp_table_priv='y',Lock_tables_priv='y',execute_priv='y',repl_slave_priv='y',repl_client_priv='y',create_view_priv='y',show_view_priv='y',create_routine_priv='y',alter_routine_priv='y',create_user_priv='y' where user='root';commit;

6、停止mysql服务
# service mysql stop

7、将sql_mode修改回原来的值
# vi /usr/local/mysql/my.cnf
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

8、启动mysql服务
# service mysql start
因这个是正常的启动mysql了,这时候验证一下root用户登录是否正常了,也就是正常的登录mysql
# mysql -uroot -p
回车后输入密码,如果不相信是否还需要输入密码,可以先直接回车试验一下;
正常情况下登录进mysql了,再查看一下mysql下的user表是否有数据了。

原文地址:https://www.cnblogs.com/binghuaZhang/p/13994763.html