python 連接遠程數(shù)據(jù)庫

2020-01-09
總結自菜鳥教程
以下所有操作基于pymysql庫

數(shù)據(jù)庫連接

使用pymysql.connect方法

#!/usr/bin/python
# -*- coding: UTF-8 -*-

import pymysql
#import MySQLdb

# connect方法 連接數(shù)據(jù)庫
db = pymysql.connect("192.168.24.144","chy","123456","mysql")
# cursor() 創(chuàng)建游標對象
cursor = db.cursor()

# 使用 execute()  方法執(zhí)行 SQL 查詢 
cursor.execute("SELECT VERSION()")

# fetchone() 方法獲取單條數(shù)據(jù)
data = cursor.fetchone()

print ("Database version : %s " % data)

執(zhí)行后報錯

(1045, u"Access denied for user 'chy'@'192.168.24.123' (using password: YES)")

連接失敗,在服務端查看用戶chy的相關情報

mysql> SELECT host ,user , authentication_string  FROM user WHERE user = 'chy';
+-----------+------+-------------------------------------------+
| host      | user | authentication_string                     |
+-----------+------+-------------------------------------------+
| localhost | chy  | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
+-----------+------+-------------------------------------------+
1 row in set (0.00 sec)

目測是host需要修改,和上午記載的問題基本一致
使用上午的方法進行修改
update user set host = '%' where user ='chy';
修改后問題依然存在

(1044, u"Access denied for user 'chy'@'%' to database 'mysql'")

再查發(fā)現(xiàn)SELECT host ,user , authentication_string FROM user WHERE user = 'chy';不太夠用,需要查看一些別的權限,使用SELECT host,user,Grant_priv,Super_priv FROM mysql.user;

mysql> SELECT host,user,Grant_priv,Super_priv FROM mysql.user;
+-----------+------------------+------------+------------+
| host      | user             | Grant_priv | Super_priv |
+-----------+------------------+------------+------------+
| %         | root             | Y          | Y          |
| localhost | mysql.session    | N          | Y          |
| localhost | mysql.sys        | N          | N          |
| localhost | debian-sys-maint | Y          | Y          |
| %         | chy              | N          | N          |
+-----------+------------------+------------+------------+
5 rows in set (0.00 sec)

修改權限Grant_privSuper_priv 等會查查這些權限都是什么意思

mysql> UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='chy';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)

解決以上問題,執(zhí)行上面的代碼腳本,終端輸出如下:

chy:~/code_bak/MY_SQL$ python mysql.py 
Database version : 5.7.28-0ubuntu0.16.04.2
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 1,MySQL權限體系 mysql 的權限體系大致分為5個層級: 全局層級: 全局權限適用于一個給定服務器中的所有...
    不排版閱讀 1,009評論 0 4
  • 用了mysql好多年,很少關注mysql自帶庫,自然也不知道這個庫里存放些什么,在看《MySQL排錯指南》時看到它...
    灼灼2015閱讀 1,982評論 1 3
  • MSSQL 跨庫查詢(臭要飯的!黑夜) 榨干MS SQL最后一滴血 SQL語句參考及記錄集對象詳解 關于SQL S...
    碧海生曲閱讀 5,908評論 0 1
  • 一. MySQL密碼的恢復方法之一 如果忘記了MySQL的root密碼,可以用以下方法重新設置: 1. KILL掉...
    不排版閱讀 580評論 0 1
  • 1.A simple master-to-slave replication is currently being...
    Kevin關大大閱讀 6,240評論 0 3

友情鏈接更多精彩內容