[問題] python 連 SQL server

看板Python作者 (123)時間8年前 (2017/08/24 02:15), 8年前編輯推噓4(4028)
留言32則, 3人參與, 最新討論串1/1
想請問有使用 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

08/24 08:19, , 1F
算你幸運~我昨天剛遇到這問題欸
08/24 08:19, 1F

08/24 08:21, , 2F
GRANT SELECT,INSERT,UPDATE,DELETE ON [db_name].*
08/24 08:21, 2F

08/24 08:21, , 3F
TO [username]@[remoteIP] identified by '[passwor
08/24 08:21, 3F

08/24 08:21, , 4F
d]';
08/24 08:21, 4F

08/24 08:21, , 5F
最後記得
08/24 08:21, 5F

08/24 08:21, , 6F
FLUSH PRIVILEGES;
08/24 08:21, 6F
感謝 想問幾個問題 db_name 指的是資料庫名稱嗎? remoteIP 可不可以大量開放 類似 192.*.***.*之類的

08/24 20:05, , 7F
phpmyadmin 是架在和資料庫同台機器,存取都算是本地啊
08/24 20:05, 7F

08/24 20:19, , 8F
對 是指資料庫的名稱
08/24 20:19, 8F

08/24 20:19, , 9F
ip那個我就不清楚了 好像可以
08/24 20:19, 9F

08/24 20:19, , 10F
但我目前沒有用過耶
08/24 20:19, 10F
感謝 有點改善 目前 server 已經能利用 IP 登入了 好像是我把防火牆關了 我輸入 sudo ufw disable QQ 不過目前還是無法利用外部連進來 error 如下 另外我防火牆有開啟 並加這段 sudo ufw allow 3306 結果其他電腦就無法利用 phpmyadmin 連過來了 奇怪 3306 不是開啟了嗎??? http://imgur.com/sy9G12R

08/25 13:13, , 11F
你可以嘗試用其他資料庫客戶端去連db, phpmyadmin 能連不
08/25 13:13, 11F

08/25 13:13, , 12F
代表什麼
08/25 13:13, 12F

08/25 13:14, , 13F
他算是一個本地代理,你希望的是不經過這個代理直接操作
08/25 13:14, 13F

08/25 13:14, , 14F
資料庫
08/25 13:14, 14F

08/25 13:16, , 15F
你的使用者帳號有包含空白嗎?
08/25 13:16, 15F

08/25 13:19, , 16F
你先從外部用 "telnet 114.34.138.146 3306" 測試
08/25 13:19, 16F

08/25 13:19, , 17F
有回應表示 server 已經沒問題了。
08/25 13:19, 17F
我目前可以使用 ssh ip 進來 但是無法用 telnet ip 進來 會出現亂碼

08/25 13:20, , 18F
你的問題大概是mysql使用者權限沒設定好
08/25 13:20, 18F

08/25 13:29, , 19F
另外,你create mysql user 的時候,有分別在
08/25 13:29, 19F

08/25 13:30, , 20F
localhost 和外部% 都有創設帳號嗎?
08/25 13:30, 20F

08/25 13:31, , 21F
例如 create user 'test'@'localhost .......
08/25 13:31, 21F

08/25 13:32, , 22F
以及 create user 'test'@'%'........
08/25 13:32, 22F

08/25 13:33, , 23F
帳號創設完畢,再用 grant 給予適當權限,同樣的外部
08/25 13:33, 23F

08/25 13:34, , 24F
% 和本地 localhost 都要設定
08/25 13:34, 24F

08/25 13:37, , 25F
事實上,對於mysql來說 test@localhost 和 test@% 是
08/25 13:37, 25F

08/25 13:38, , 26F
不同帳號,所以要分別設定。
08/25 13:38, 26F
上面的意思是 用手點 phpmyadmin 建立帳號後 還要再去 mysql 使用 grant 嗎? 目前 PY error 如下 同樣指令 server 端可以執行 test 帳號有開 % 試了一堆 也有用 grant 一樣不行 話說 36-229-90-122 是什麼阿 應該不是 ip

08/25 22:34, , 27F
"telnet 114.34.138.146 3306"只是要測試從mysql
08/25 22:34, 27F

08/25 22:35, , 28F
server 能不能從外部連到有亂碼就亂碼無所謂,你大概
08/25 22:35, 28F

08/25 22:36, , 29F
誤會我的意思
08/25 22:36, 29F

08/25 22:37, , 30F
36-229-90-122.dynamic-ip.hinet.net 是host name
08/25 22:37, 30F

08/25 22:37, , 31F
ip 是 36.229.90.122
08/25 22:37, 31F

08/25 22:38, , 32F
你的問題看起來就是test帳戶權限沒設定好
08/25 22:38, 32F
解決了 我帳號多打個空格............. 感謝各位 可以連上了 ※ 編輯: f496328mm (36.229.90.122), 08/28/2017 03:07:11
文章代碼(AID): #1PdSP0-0 (Python)