[爆卦]python連接資料庫mssql是什麼?優點缺點精華區懶人包

為什麼這篇python連接資料庫mssql鄉民發文收入到精華區:因為在python連接資料庫mssql這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者f496328mm (123)看板Python標題[問題] python 連 SQL serve...




想請問有使用 python 連接SQL server 的大大

我目前已經架好SQL server,外部可以根據某個 ip 連到我的 SQL server



目前我可以在 server 端利用 python 直接存取 SQL server,


但是直接打 IP ,卻出現error

導致我無法利用外部機器,進行存取,



而外部我直接用 phpmyadmin 網頁,卻可以進入該資料庫,

想請問,要如何修改,才能從外部,利用 python 連接 SQL server ??

謝謝




我上網找過一些文章,比較奇怪的是,我的 /etc/mysql/my.cnf 文件幾乎是空的,

所以我參考這篇,我的 my.cnf 跟他一樣

https://askubuntu.com/questions/699903/why-is-etc-mysql-my-cnf-empty


所以我去修改這個文件,/etc/mysql/mysql.conf.d/mysqld.cnf,

將 skip-external-locking 和 bind-addrerss = 127.0.0.1 註解掉,

結果還是失敗



ps : 在 SQL 使用者權限上 ,主機名稱我是給 % ,代表所有主機都可以連過來對八

另外我 SQL server 是架在 ubuntu 16.04 上



--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.36.52.141
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1503512128.A.F80.html
HenryLiKing: 算你幸運~我昨天剛遇到這問題欸 08/24 08:19
HenryLiKing: GRANT SELECT,INSERT,UPDATE,DELETE ON [db_name].* 08/24 08:21
HenryLiKing: TO [username]@[remoteIP] identified by '[passwor 08/24 08:21
HenryLiKing: d]'; 08/24 08:21
HenryLiKing: 最後記得 08/24 08:21
HenryLiKing: FLUSH PRIVILEGES; 08/24 08:21

感謝 想問幾個問題

db_name 指的是資料庫名稱嗎?

remoteIP 可不可以大量開放 類似 192.*.***.*之類的
s860134: phpmyadmin 是架在和資料庫同台機器,存取都算是本地啊 08/24 20:05
HenryLiKing: 對 是指資料庫的名稱 08/24 20:19
HenryLiKing: ip那個我就不清楚了 好像可以 08/24 20:19
HenryLiKing: 但我目前沒有用過耶 08/24 20:19

感謝 有點改善 目前 server 已經能利用 IP 登入了

好像是我把防火牆關了

我輸入 sudo ufw disable QQ


不過目前還是無法利用外部連進來

error 如下


另外我防火牆有開啟

並加這段

sudo ufw allow 3306

結果其他電腦就無法利用 phpmyadmin 連過來了

奇怪 3306 不是開啟了嗎???

http://imgur.com/sy9G12R

s860134: 你可以嘗試用其他資料庫客戶端去連db, phpmyadmin 能連不 08/25 13:13
s860134: 代表什麼 08/25 13:13
s860134: 他算是一個本地代理,你希望的是不經過這個代理直接操作 08/25 13:14
s860134: 資料庫 08/25 13:14
s860134: 你的使用者帳號有包含空白嗎? 08/25 13:16
bluecadence: 你先從外部用 "telnet 114.34.138.146 3306" 測試 08/25 13:19
bluecadence: 有回應表示 server 已經沒問題了。 08/25 13:19

我目前可以使用 ssh ip 進來

但是無法用 telnet ip 進來 會出現亂碼

bluecadence: 你的問題大概是mysql使用者權限沒設定好 08/25 13:20
bluecadence: 另外,你create mysql user 的時候,有分別在 08/25 13:29
bluecadence: localhost 和外部% 都有創設帳號嗎? 08/25 13:30
bluecadence: 例如 create user 'test'@'localhost ....... 08/25 13:31
bluecadence: 以及 create user 'test'@'%'........ 08/25 13:32
bluecadence: 帳號創設完畢,再用 grant 給予適當權限,同樣的外部 08/25 13:33
bluecadence: % 和本地 localhost 都要設定 08/25 13:34
bluecadence: 事實上,對於mysql來說 test@localhost 和 test@% 是 08/25 13:37
bluecadence: 不同帳號,所以要分別設定。 08/25 13:38

上面的意思是 用手點 phpmyadmin 建立帳號後

還要再去 mysql 使用 grant 嗎?


目前 PY error 如下


同樣指令 server 端可以執行 test 帳號有開 %


試了一堆 也有用 grant 一樣不行



話說 36-229-90-122 是什麼阿 應該不是 ip

bluecadence: "telnet 114.34.138.146 3306"只是要測試從mysql 08/25 22:34
bluecadence: server 能不能從外部連到有亂碼就亂碼無所謂,你大概 08/25 22:35
bluecadence: 誤會我的意思 08/25 22:36
bluecadence: 36-229-90-122.dynamic-ip.hinet.net 是host name 08/25 22:37
bluecadence: ip 是 36.229.90.122 08/25 22:37
bluecadence: 你的問題看起來就是test帳戶權限沒設定好 08/25 22:38

解決了 我帳號多打個空格.............

感謝各位 可以連上了
※ 編輯: f496328mm (36.229.90.122), 08/28/2017 03:07:11

你可能也想看看

搜尋相關網站