mysql连接错误解决

  情况一:

  错误:ERROR 1044 (42000): Access denied for user ‘‘@‘localhost‘ to database ‘mysql‘

  mysql数据库的user表里,存在用户名为空的账户即匿名账户,导致登录的时候是虽然用的是root,但实际是匿名登录的,通过错误提示里的‘‘@‘localhost‘可以看出来。

  解决方法:参考

  1.关闭mysql
     [[email protected] ~]# service mysqld stop
  2.屏蔽权限
         [[email protected] ~]# mysqld_safe --skip-grant-table
        屏幕出现: Starting demo from .....
  3.新开起一个终端输入
             [[email protected] ~]# mysql -u root mysql
             mysql> delete from user where USER=‘‘;
             mysql> FLUSH PRIVILEGES;  // 一定要写入,否则如果关闭先前的终端,又会出现原来的错误
             mysql> \q

  情况二:

  我是想通过flask_sqlalchemy来删除mysql里的一个表,但是flask_sqlalchemy只有 db.drop_all()

  现在找到一种方法可以使用flask_sqlalchemy和pymysql来进行远程操作 

  直接使用pymysql来进行删除表操作:

# -*- coding:utf-8 -*-
#!/usr/bin/env python
# @Author  : tianbao
# @Contact : [email protected]
# @Time    : 2018/5/13 9:55
# @File    : pymysql_del_preview.py
# @Software: PyCharm
import pymysql

connect = pymysql.connect(  # 连接数据库服务器
    user="root",
    password="root",
    host="205.266.87.91",
    port=3306,
    db="movie",
    charset="utf8"
)
conn = connect.cursor()        #创建操作游标

conn.execute("SELECT * FROM user")    #选择查看自带的user这个表  (若要查看自己的数据库中的表先use XX再查看)
rows = conn.fetchall()                #fetchall(): 接收全部的返回结果行,若没有则返回的是表的内容个数 int型
for i in rows:
    print(i)

conn.execute("drop table preview")

conn.close()           #   关闭游标连接
connect.close()        #   关闭数据库服务器连接 释放内存

  通过flask_sqlalchemy 再生成原来的表

# -*- coding:utf-8 -*-
#!/usr/bin/env python
# @Author  : tianbao
# @Contact : [email protected]
# @Time    : 2018/5/13 9:34
# @File    : flask_sqlalchemy_create_preview.py
# @Software: PyCharm
from flask import Flask,render_template
from flask_sqlalchemy import SQLAlchemy
from datetime import datetime

app = Flask(__name__)
app.config[‘SQLALCHEMY_DATABASE_URI‘] = "mysql+pymysql://root:[email protected]:3306/movie"
app.config[‘SQLALCHEMY_TRACK_MODIFICATIONS‘] = True
app.config[‘SECRET_KEY‘] = "HelloWorld"

db = SQLAlchemy(app)

# 上映预告
class Preview(db.Model):
    __tablename__ = ‘preview‘
    id = db.Column(db.Integer,primary_key=True)
    title = db.Column(db.String(255),unique=True)
    logo = db.Column(db.String(255),unique=True) # 封面
    addtime = db.Column(db.DateTime, index=True, default=datetime.now)

    def __repr__(self):
        return ‘<Preview %s>‘%self.title

if __name__ == ‘__main__‘:
    db.create_all()
    # db.drop_all()
    # role = Role(
    #     name=‘超级管理员‘,
    #     auths=‘‘
    # )
    # from werkzeug.security import generate_password_hash
    # admin = Admin(
    #     name=‘imoocmovie1‘,
    #     pwd=generate_password_hash(‘imoocmovie1‘),
    #     is_super=0,
    #     roleid=1,
    # )
    # db.session.add(admin)
    # db.session.commit()
    # pass

原文地址:https://www.cnblogs.com/guotianbao/p/9031406.html

时间: 2024-08-08 13:41:25

mysql连接错误解决的相关文章

mysql连接错误解决(ERROR 2049 (HY000): Connection using old (pre-4.1.1) authentication protocol ref used (client option &#39;secure_auth&#39; enabled))

当使用mysql的新版本是,连接老版本的mysql,就会有可能报: ERROR 2049 (HY000): Connection using old (pre-4.1.1) authentication protocol refused (client option 'secure_auth' enabled)这个错误. 异常原因在于服务器端的密码管理协议陈旧,使用的是旧有的用户密码格式存储:但是客户端升级之后采用了新的密码格式.mysql新版本遇到这种不一致的情况就会拒绝连接. 所以在连接是:

MySql连接错误:Can&#39;t get hostname for your address

简单解释 MySQL server received a request from you to allow you to connect to the database. So next thing it tried to do is to check what name is bound to your IP address (name resolution) and it failed to do so. So it just denied you access. 可以这么理解mysql处

Mysql连接错误:Lost connection to Mysql server at &#39;waiting for initial communication packet&#39;

在远程连接mysql的时候,连接不上,出现如下报错:Lost connection to MySQL server at 'waiting for initial communication packet', system error: 0截图如下: 原因分析:mysql开启了DNS的反向解析功能,这样mysql对连接的客户端会进行DNS主机名查找.mysql处理客户端解析过程:1)当mysql的client连过来的时候,服务器会主动去查client的域名.2)首先查找 /etc/hosts 文

使用navicat连接mysql连接错误:Lost connection to Mysql server at &#39;waiting for initial communication packet&#39;

使用navicat时,报错截图如下: 原因分析: mysql开启了DNS的反向解析功能,这样mysql对连接的客户端会进行DNS主机名查找. mysql处理客户端解析过程: 当mysql的client连过来的时候,服务器会主动去查client的域名. 首先查找 /etc/hosts 文件,搜索域名和IP的对应关系. 如果hosts文件没有,则查找DNS设置,进行DNS反向解析,直到timeout连接失败. mysql的DNS反向解析: mysql接收到连接请求后,获得的是客户端的ip,为了更好的

mysql连接错误导致用户blocked

1.每过一段时间线上业务就会出现如下错误: kHost 'XXXXX' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'Connection closed by foreign host 2.需要使用mysqladmin flush-hosts解锁用户 3.查看错误日志 4.查看官方文档对max_connect_errors的解释如下     当某用户连续的错误连接达到max_c

MySQL 1366错误解决办法

MySQL 1366错误大致描述如下 SQL Error: 1366: Incorrect string value: "xE8xAFxA6xE7xBBx86…" for column "address" at row 1 解决办法:检查数据库此字段的字符集与整理字符集是否与SQL语句传递数据的字符集相同:不相同则会引发MySQL1366错误. 修改MySQL该字段的字符集与整理规则即可.假设数据表为phplamp, SQL语句的字符集为utf8,出错的字段为add

mysql 常见错误解决方式

mysql 1449 : The user specified as a definer ('root'@'%') does not exist 分析: 一般是由于root用户对全局host无访问权限.因此只要给root用户添加一个访问权限即可. 解决方式: grant all privileges on *.* to [email protected]"%" identified by "."; flush privileges; 参考: http://bbs.c

Linux Mysql 1130错误解决

今天在win32下通过navicat 远程登录Mysql时出现如下错误: 想都不用想,肯定是Mysql的访问权限问题. 首先,通过终端(我用的是SSH)远程登录到Linux服务器,为了安全起见,先改一下Mysql数据的root用户密码: ? 1 2 3 4 5 6 7 8 9 10 11 [plain]  [[email protected] ~]$ mysqladmin -u root password 123456   [[email protected] ~]$ mysql -uroot

MySql连接错误:Cannot get hostname for your address

当连接的数据库再另一台服务器上存放的时候,会出现如下连接错误:Cannot get hostname for your address 解决:修改MySql的配置文件my.ini 在配置文件中增加如下两行: [mysqld] skip-name-resolve