導航:首頁 > 編程大全 > vfp如何連接資料庫

vfp如何連接資料庫

發布時間:2025-10-13 03:51:21

㈠ 請教高手:關於VFP與MYSQL資料庫連接問題

先自己扔塊磚頭出來。
歸納如下:
故障現象 : 無法連接 mysql

錯誤信息1 :ERROR 1045 (28000): Access denied for user 'usera'@'localhost' (using password:YES)
錯誤信息2 :ERROR 1045 (28000): Access denied for user 'usera'@'localhost' (using password:NO)
下面,首先分析說明這兩種錯誤信息分別在什麼情況下會出現:
描述:使用mysql連接命令或連接工具,對遠程資料庫進行連接時,可能會出現以上兩種錯誤信息,下面以命令的連接方式進行說明。
當使用mysql里連接命令時,若帶-p參數且指明密碼,或帶-p參數不指明密碼,但在下一步輸入密碼時有字元串輸入,則返回的是
「錯誤信息1」,若不帶-p參數,或帶-p參數但在下一步輸入密碼時,不輸入任何字元,則返回的是「錯誤信息2」,如下所示:
C:\Documents and Settings\Administrator>mysql -uroot -h 192.168.8.88 -proot //帶-p參數,並指明密碼
ERROR 1045 (28000): Access denied for user 'root'@'192.168.8.123' (using password: YES)
C:\Documents and Settings\Administrator>mysql -uroot -h 192.168.8.88 -p //帶-p參數,在下一步進行密碼輸入
Enter password: //有字元串輸入
ERROR 1045 (28000): Access denied for user 'root'@'192.168.8.123' (using password: YES)
C:\Documents and Settings\Administrator>mysql -uroot -h 192.168.8.88 //不帶-p參數
ERROR 1045 (28000): Access denied for user 'root'@'192.168.8.123' (using password: NO)
C:\Documents and Settings\Administrator>mysql -uroot -h 192.168.8.88 -p //帶-p參數,在下一步進行密碼輸入
Enter password: //無字元串輸入
ERROR 1045 (28000): Access denied for user 'root'@'192.168.8.123' (using password: NO)
上面的對比可總結出一點,使用mysql命令進行登錄時,若有密碼輸入行為並輸入了字元,則驗證出錯後,則返回的錯誤提示中,對於 (using password: ?)中?的關鍵字,則返回的是YES,若沒有密碼輸入行為,或無密碼字元輸入,則返回的是NO。
除上面的實驗對比,還進行了如下的登錄對比操作,並記錄了他們所返回錯誤提示類型,對上面的總結進行驗證:
1.使用存在的用戶,不輸入密碼
ERROR 1045 (28000): Access denied for user 'root'@'192.168.8.123' (using password: NO)
2.使用不存在的用戶,不輸入密碼
ERROR 1045 (28000): Access denied for user 'root'@'192.168.8.123' (using password: NO)
3.使用存在的用戶,且輸入密碼正確
ERROR 1045 (28000): Access denied for user 'root'@'192.168.8.123' (using password: YES)
4.使用存在的用戶,但輸入密碼不正確
ERROR 1045 (28000): Access denied for user 'root'@'192.168.8.123' (using password: YES)
5.使用不存在的用戶,但輸入資料庫中存在的某一個密碼
ERROR 1045 (28000): Access denied for user 'root'@'192.168.8.123' (using password: YES)
6.使用不存在的用戶,且輸入資料庫中不存在的一個密碼
ERROR 1045 (28000): Access denied for user 'root'@'192.168.8.123' (using password: YES)
總結:對於 ERROR 1045 (28000): Access denied for user'root'@'192.168.8.123' 此類錯誤返回時, (using password: ?)中?的
關鍵字是YES還是NO,關鍵不在於用戶是否存在,密碼是否正確,它的結果取決於登錄時,用戶對於密碼有沒有字元串的輸入,如果沒有,MySQL資料庫驗證後,若出錯返回此類信息,則應是 (using password: NO),若用戶對密碼有字元串的輸入,返回的則是
(using password: YES)。
下面分析這類 ERROR 1045 (28000): Access denied for user'usera'@'localhost' 錯誤出現的原因:
原因1 : 客戶端遠程訪問的用戶賬號並未創建
檢查 :
以管理員ROOT登錄後,show grants for 'user'@』IP『; 或者 select user from mysql.user; 確認用戶賬號是否存在。
mysql> show grants for 'jtsec'@'192.168.8.123';
ERROR 1141 (42000): There is no such grant defined for user 'jtsec' on host '192.168.8.123'
mysql>
返回信息:ERROR 1141 (42000): There is no such grant defined for user 'jtsec' on host '192.168.8.123'
說明,沒有jtsec用戶,或者沒有對jtsec用戶進行在192.168.8.123遠程訪問的授權。
mysql> select user,host from mysql.user;
+-------+---------------+
| user | host |
+-------+---------------+
| root | localhost |
+-------+---------------+
1 rows in set (0.00 sec)
mysql>
關於user記錄數只有一條,是root,並沒有jtsec相關的記錄,說明沒有資料庫中沒有jtsec這個帳號。
處理 :創建用戶賬號。
mysql> grant all privileges on *.* to 'jtsec'@'192.168.8.123' identified by 'jtsec' with grant option;
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> show grants for 'jtsec'@'192.168.8.123';
+---------------------------------------------------------------------------------------------------------------------------------------------+
| Grants for [email protected] |
+---------------------------------------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'jtsec'@'192.168.8.123' IDENTIFIED BY PASSWORD '*' WITH GRANT OPTION |
+---------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> select user,host from mysql.user;
+-------+---------------+
| user | host |
+-------+---------------+
| jtsec | 192.168.8.157 |
| root | localhost |
+-------+---------------+
2 rows in set (0.00 sec)
mysql>
原因2 : 用戶賬號存在,但未對其所在的客戶端的IP進行遠程訪問授權允許
檢查 :
以管理員ROOT登錄後 show grants for 'user'@'IP';
mysql> show grants for 'root'@'192.168.8.123';
ERROR 1141 (42000): There is no such grant defined for user 'root' on host '192.168.8.123'
mysql>
返回信息:ERROR 1141 (42000): There is no such grant defined for user 'root' on host '192.168.8.123'
說明,沒有root用戶(因為是MySQL超級用戶所以排除此種可能),或者沒有對root用戶進行在192.168.8.123遠程訪問的授權。
我們來對比一下看,root用戶本地訪問的許可權,則可查出:
mysql> show grants for 'root'@'localhost';
+----------------------------------------------------------------------------------------------------------------------------------------+
| Grants for root@localhost |
+----------------------------------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD '*' WITH GRANT OPTION |
+----------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
或者直接查詢mysql的user用戶表select user,host from mysql.user;,其中記錄了每一個用戶的許可權信息
mysql> select user,host from mysql.user;
+-------+---------------+
| user | host |
+-------+---------------+
| root | localhost |
+-------+---------------+
1 rows in set (0.00 sec)
mysql>
關於user值為root的記錄數只有一條,且host值為localhost,說明root用戶只能在本地訪問資料庫。
處理 :進行root用戶的遠程訪問授權,可以授權到指定的客戶端IP,也可以授權為所有IP都可訪問(host值為%)。
授權為所有IP都使用用戶root,密碼root,來遠程訪問資料庫
mysql> GRANT ALL PRIVILEGES ON *.* TO'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
再次進行授權的查詢
mysql> show grants for 'root'@'%';
+--------------------------------------------------------------------------------------------------------------------------------+
| Grants for root@% |
+--------------------------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY PASSWORD '*' WITH GRANT OPTION |
+--------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
再次查詢授權表記錄
mysql> select user,host,password from mysql.user;
+-------+---------------+-------------------------------------------+
| user | host | password |
+-------+---------------+-------------------------------------------+
| root | localhost | * |
| root | % | * |
+-------+---------------+-------------------------------------------+
2 rows in set (0.00 sec)
mysql>
原因3 : 用戶賬號授權訪問的密碼不正確
檢查 :以管理員ROOT登錄後, select user,host,password from mysql.user;
mysql> select user,host,password from mysql.user;
+-------+---------------+-------------------------------------------+
| user | host | password |
+-------+---------------+-------------------------------------------+
| root | localhost | * |
| root | % | * |
| jtsec | 192.168.8.123 | |
| jtsec | 192.168.8.123 | * |
+-------+---------------+-------------------------------------------+
4 rows in set (0.00 sec)
mysql>
根據查詢結果可以看出來,root賬戶的本地訪問和遠程訪問密碼一樣。
而jtse賬戶在192.168.8.123這個IP上,遠程訪問資料庫的密碼有兩個,其中一個為空(第三條記錄)。
也就是說在IP為192.168.8.123的客戶機上,使用jtsec這個賬戶遠程訪問資料庫,合法的密碼有兩個可以選擇:
一個是不輸入密碼(密碼為空),另一個是*(經過加密的),
其餘的輸入,都是錯的。
處理 :使用正確的訪問密碼進行訪問即可。

錯誤信息 :ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.8.88' (10065)
原因 :MySQL伺服器上防火牆的阻斷
檢查 :在linux下查看iptables規則,看是否未對MySQL資料庫默認通信埠3306進行放行
處理 :
添加相應的放行規則
自己在 /etc/sysconfig/iptables 里加了一下代碼
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
或嘗試關掉防火牆
chkconfig ip6tables off
chkconfig iptables off
問題描述:
C:\Documents and Settings\Administrator>mysql -uroot -h 192.168.8.88 -proot
ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.8.88' (10065)
C:\Documents and Settings\Administrator>

錯誤信息 :ERROR 2003 (HY000): Can't connect to MySQL server on 'hostxxxxx' (10061)
原因 : mysqld資料庫服務沒有啟動。
檢查 :在windows 的任務管理器,或者 unix/linux 下 ps -aux | grep mysql 看一下。確認服務已經啟動。
處理 :啟動mysqld 服務

錯誤信息 :ERROR 1130: Host xx.xx.xx.xx is not allowed to connect to this MySQL server
原因 : mysql伺服器沒有賦予此客戶端遠程連接的許可權。
檢查 :在mysql伺服器本地查詢mysql庫里user表對應的host是否包含客戶端機器的IP(%為不限制IP允許遠程連接)。
處理 :修改mysql庫下的user表:update user set host '%' where user 'XXX';flush privileges;

錯誤信息 :ERROR 1045 (28000): Access denied for user 'usera'@'localhost' (using password:NO)
原因 : 用戶賬號並未創建,遠程登錄時登錄指令未直接包含密碼項
檢查 :以管理員ROOT登錄後,show grants for 'usera'@'localhost'; 或者 select user from mysql.user; 確認用戶賬號是否存在。
處理 :創建用戶賬號。

㈡ VFP中怎樣將一個資料庫中的表(非自由表),添加到另一個資料庫中使用,謝謝了。

在VBF中打開一個DBC資料庫。

或者將另一資料庫DFC表復制粘貼到所需路徑,用上述方法添加。

㈢ 在VFP中,怎麼把自由表移到資料庫中,能不能舉個例子謝謝了

方法1、打開項目管理器,點選資料庫下的資料庫表,點右邊添加按鈕,添加自由表
2、用命令的方法添加
close database &&關閉所有資料庫
open database 數庫名 exclusive &&獨占打開資料庫
add table 自由表 && 添加自由表到當前資料庫表中

閱讀全文

與vfp如何連接資料庫相關的資料

熱點內容
world怎麼去除頁面頂端及底端的數據 瀏覽:659
java接入安卓qq協議 瀏覽:786
構造器跟構造代碼塊區別 瀏覽:769
網站如何設置變灰色 瀏覽:359
創維卡機需要升級嗎 瀏覽:306
怎麼通過手機壓縮文件 瀏覽:811
蘋果6的通話背景功能 瀏覽:798
wifi密碼被分享怎麼辦 瀏覽:206
遠程桌面把在對方電腦文件拷過來 瀏覽:913
vfp如何連接資料庫 瀏覽:881
linux文件綠色 瀏覽:547
word一打開就有頁眉頁腳 瀏覽:535
資料庫應用技術答案 瀏覽:986
桌面文件後綴名字 瀏覽:673
安卓3d程序鎖 瀏覽:203
蘋果系統自動更新app怎麼關閉 瀏覽:685
win10文件大小是40g 瀏覽:445
ipad應用程序等待中 瀏覽:150
如何分清楚是官網還是個人網站 瀏覽:851
巨盾lpkusp10感染病毒專殺工具 瀏覽:613

友情鏈接