本文目錄一覽:
- 1、通過IP訪問mysql數據庫,這樣可以嗎
- 2、mysql連接時用的IP地址是不是電腦本機上的IP地址呢!
- 3、怎麼設置才能讓外網ip可以訪問mysql數據庫?
- 4、怎麼設置才能讓外網ip可以訪問mysql數據庫
- 5、如何遠程訪問MySQL數據庫詳解
通過IP訪問mysql數據庫,這樣可以嗎
可以使用命令遠程連接mysql數據庫(前提是mysql裡面用戶名和登錄網段已經經過了授權)
mysql -u用戶名 -p密碼 -h 數據庫IP
mysql連接時用的IP地址是不是電腦本機上的IP地址呢!
是root用戶的話,IP就是localhost或127.0.0.1,只是代表使用本機,不是代表本機IP地址,操作方法如下:
1、首先,利用Navicat創建一個數據庫和表,數據庫名為testdb,表為userinfo,並添加一條新記錄。
2、用如下的數據庫連接字符串訪問數據庫時,是沒有問題的。Driver = MySQL ODBC 5.1 Driver; Server = localhost; Port=3306; DATABASE = testdb; user = root; password = 123456。
3、其中,Server是數據庫所在主機IP地址,Prot是連接端口;user和password則為連接數據庫的用戶名和密碼,使用Select * from userinfo 可以正確獲取到數據。
4、但是當把localhost換成實際的IP地址的時候,就報錯了,說明這個數據庫testdb是默認沒開啟訪問權限的,默認情況下只允許localhost和127.0.0.1訪問。
5、更新root賬戶的權限。打開mysql命令行窗口,輸入grant all privileges on *.* to root@”%” identified by ‘abc’ with grant option; flush privileges。
6、創建一個新賬戶,如guest,並將可被訪問的主機定義為%,即所有主機都可訪問該賬戶。測試,沒有問題。
怎麼設置才能讓外網ip可以訪問mysql數據庫?
1、首先檢查mysql所在服務器的防火牆,如果限制了外網對3306端口的連接,那麼放開限制
Linux服務器中執行
iptables -L 可以查看當前的防火牆規則
iptables -F 可以清空所有防火牆規則
2、確保mysql的監聽地址是0.0.0.0
監聽地址是0.0.0.0 ,表示該mysql允許所有IP地址進行連接,這是允許遠程連接的基礎
監聽地址是127.0.0.1,則代表該mysql只允許所在服務器本機連接,外網是無法連接的
怎麼知道mysql的監聽地址是多少
Linux服務器中執行如下命令可以查看: netstat -nutlp|grep mysql
3、添加遠程連接mysql的賬號
此步驟是必須要操作的,mysql本身的用戶只能在本機上連接數據庫,外網連接的話,需要先添加遠程用戶並授權。
在mysql命令行模式下,或者phpmyadmin中執行sql語句添加遠程連接用戶
grant all on *.* to root@’%’ identified by ‘123456’;
flush privileges;
命令解釋:
*.* 第一個*表示庫,第二個*表示表; *.*對全部數據庫的全部表授權,so.ok 表示只對so這個庫中的ok表授權
root 表示要給哪個用戶授權,這個用戶可以是存在的用戶,也可以是不存在的
‘%’ 表示允許遠程連接的IP地址,%代表允許所有IP連接
只允許某個IP遠程連接,可以寫成’123.123.123.123′
只允許123.123.123.*這個網段遠程連接,可以寫成 ‘123.123.123.%’ ‘123456’ 是設置授權用戶的連接密碼
flush privileges; 代表立即刷新權限表,使添加的用戶生效
上面三步都設置好了,就可以再次嘗試遠程連接mysql了。
怎麼設置才能讓外網ip可以訪問mysql數據庫
整體簡介:
為了安全起見默認情況下Mysql數據庫的監聽地址是127.0.0.1,就是指本機下的程序才能訪問。
監聽地址是0.0.0.0 ,表示該mysql允許所有IP地址進行連接,這是允許遠程連接的基礎
監聽地址是127.0.0.1,則代表該mysql只允許所在服務器本機連接,外網是無法連接的
所需工具原料:
Linux,apache,php,mysql
解決方法:
1. 用命令vi 編輯/etc/mysql/my.cnf 如圖:
在[mysqld]節中增加下面一行:
2. bind-address=0.0.0.0 #全部地址或者指定的ip地址如圖所示
3. 重啟服務
service mysqld restart
4. Linux服務器中執行如下命令可以查看: netstat -nutlp|grep mysql(只查看mysql的監聽), netstat -tln(查看所有的監聽)是否成功。
如何遠程訪問MySQL數據庫詳解
一、連接遠程數據庫:
1、顯示密碼
如:MySQL
連接遠程數據庫(192.168.5.116),端口“3306”,用戶名為“root”,密碼“123456”
C:/mysql
-h
192.168.5.116
-P
3306
-u
root
-p123456
2、隱藏密碼
如:MySQL
連接本地數據庫,用戶名為“root”,
C:/mysql
-h
localhost
-u
root
-p
Enter
password:
二、配置mysql允許遠程鏈接
默認情況下,mysql帳號不允許從遠程登陸,只能在localhost登錄。本文提供了二種方法設置mysql可以通過遠程主機進行連接。
一、改表法
在localhost登入mysql後,更改
“mysql”
數據庫里的
“user”
表裡的
“host”
項,將”localhost”改稱”%”
例如:
#mysql
-u
root
-p
Enter
password:
……
mysql
mysqlupdate
user
set
host
=
‘%’
where
user
=
‘root’;
mysqlselect
host,
user
from
user;
二、授權法
例如:
你想myuser使用mypassword(密碼)從任何主機連接到mysql服務器的話。
mysqlGRANT
ALL
PRIVILEGES
ON
*.*
TO
‘myuser’@’%’IDENTIFIED
BY
‘mypassword’
WITH
GRANT
OPTION;
如果你想允許用戶myuser從ip為192.168.1.6的主機連接到mysql服務器,並使用mypassword作為密碼
mysqlGRANT
ALL
PRIVILEGES
ON
*.*
TO
‘myuser’@’192.168.1.3’IDENTIFIED
BY
‘mypassword’
WITH
GRANT
OPTION;
mysqlFLUSH
PRIVILEGES
使修改生效,就可以了
常見問題:
1、在採用法二授權法之後,無法在本地登錄mysql(如:#mysql
-u
root
-p
-h
192.168.5.116
Enter
password:
ERROR
1045
(28000):
Access
denied
for
user
‘root’@’loadb116’
(using
password:
YES)
上例中loadb116是主機名.
解決方法:
1、這時可以使用:mysql
-u
root
-p
登錄,進入到mysql後。
mysql
grant
all
privileges
on
*.*
to
‘root’@’loadb116’
identified
by
‘123456’
with
grant
option;
Query
OK,
rows
affected
(0.00
sec)
mysql
flush
privileges;
Query
OK,
rows
affected
(0.00
sec)
2、在本地使用ip地址登錄
#
mysql
-u
root
-p
-h
192.168.5.116
Enter
password:
Welcome
to
the
MySQL
monitor.
Commands
end
with
;
or
/g.
Your
MySQL
connection
id
is
60
Server
version:
5.1.45
MySQL
Community
Server
(GPL)
Type
‘help;’
or
‘/h’
for
help.
Type
‘/c’
to
clear
the
buffer.
mysql
原創文章,作者:GJYWD,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/325156.html