當前位置:首頁 » 數據倉庫 » 資料庫不能用root登錄
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

資料庫不能用root登錄

發布時間: 2022-08-29 11:14:37

『壹』 mysql授權遠程訪問%為什麼root不行

為了遷移mysql到oracle,採用了oracle的sql developer工具,並下載了mysql

jdbc驅動(為了讓sql developer連接mysql)

為了從oracle sql developer遠程以root連接mysql

1
2
3

mysql> GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY '123456' WITH GRANT OPTION;
Query OK, 0 rows affected (0.00 sec)
mysql>

在設置root賬戶密碼時,可以選擇是否允許其從遠程訪問。默認情況下是不允許的。

在命令行下,可以有兩種大同小異的方法來作此設置:

(1)

1
2
3

mysql>GRANT ALL PRIVILEGES ON *.* TO root@localhost IDENTIFIED BY 'something' WITH GRANT OPTION;

mysql>GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY 'something' WITH GRANT OPTION;

第一句增加了一個root用戶授權通過本地機(localhost)訪問,密碼逗something地。

第二句則是使用通配符,授與root用戶從任何其它主機發起的訪問。

(2)亦可直接使用update語句修改user表:使用root用戶或其他用戶登錄mysql,轉到mysql資料庫

1
2
3
4
5

update user set host='localhost' where user='root';
flush privileges;//只允許root在本機登錄

update user set host='%' where user='root';
flush privileges;//允許root遠程訪問

注意,以上一定要加flush語句。

另外,如果要建新用戶,則用grant語句比較方便,記住語句grant總是創建新用戶。

例如我目前的庫:
mysql> select host,user from user;
+-----------+--------+
| host | user |
+-----------+--------+
| % | mytest |
| % | root |
| localhost | mytest |
| localhost | root |
+-----------+--------+
4 rows in set (0.00 sec)

root和mytest都既能本地連,也能遠程連

『貳』 如何讓mysql以root用戶遠程登陸mysql資料庫

開啟 MySQL 的遠程登陸帳號有兩大步:
1、確定伺服器上的防火牆沒有阻止 3306 埠。
MySQL 默認的埠是 3306 ,需要確定防火牆沒有阻止 3306 埠,否則遠程是無法通過 3306 埠連接到 MySQL 的。
如果您在安裝 MySQL 時指定了其他埠,請在防火牆中開啟您指定的 MySQL 使用的埠號。
如果不知道怎樣設置您的伺服器上的防火牆,請向您的伺服器管理員咨詢。
2、增加允許遠程連接 MySQL 用戶並授權。
1)首先以 root 帳戶登陸 MySQL
在 Windows 主機中點擊開始菜單,運行,輸入「cmd」,進入控制台,MySQL 的 bin 目錄下,然後輸入下面的命令。
在 Linux 主機中在命令提示行下輸入下面的命令。
> MySQL -uroot -p123456
123456 為 root 用戶的密碼。
2)創建遠程登陸用戶並授權
> grant all PRIVILEGES on discuz.* to ted@'123.123.123.123' identified by '123456';
上面的語句表示將 discuz 資料庫的所有許可權授權給 ted 這個用戶,允許 ted 用戶在 123.123.123.123 這個 IP 進行遠程登陸,並設置 ted 用戶的密碼為 123456 。
下面逐一分析所有的參數:
all PRIVILEGES 表示賦予所有的許可權給指定用戶,這里也可以替換為賦予某一具體的許可權,例如:select,insert,update,sqlserver/42947.htm target=_blank >delete,create,drop 等,具體許可權間用「,」半形逗號分隔。
discuz.* 表示上面的許可權是針對於哪個表的,discuz 指的是資料庫,後面的 *
表示對於所有的表,由此可以推理出:對於全部資料庫的全部表授權為「*.*」,對於某一資料庫的全部表授權為「資料庫名.*」,對於某一資料庫的某一表授
權為「資料庫名.表名」。
ted 表示你要給哪個用戶授權,這個用戶可以是存在的用戶,也可以是不存在的用戶。
123.123.123.123 表示允許遠程連接的 IP 地址,如果想不限制鏈接的 IP 則設置為「%」即可。
123456 為用戶的密碼。
執行了上面的語句後,再執行下面的語句,方可立即生效。
> flush privileges;
遠程登錄mysql一些常用的代碼段,大家可參考一下。
一、允許root用戶在任何地方進行遠程登錄,並具有所有庫任何操作許可權,具體操作如下:
在本機先使用root用戶登錄mysql:
mysql -u root -p"youpassword"
進行授權操作:
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'youpassword' WITH GRANT OPTION;
重載授權表:
FLUSH PRIVILEGES;
退出mysql資料庫:
exit

二、允許root用戶在一個特定的IP進行遠程登錄,並具有所有庫任何操作許可權,具體操作如下:
在本機先使用root用戶登錄mysql:
mysql -u root -p"youpassword"
進行授權操作:
GRANT ALL PRIVILEGES ON *.* TO root@"172.16.16.152" IDENTIFIED BY "youpassword" WITH GRANT OPTION;
重載授權表:
FLUSH PRIVILEGES;
退出mysql資料庫:
exit

三、允許root用戶在一個特定的IP進行遠程登錄,並具有所有庫特定操作許可權,具體操作如下:
在本機先使用root用戶登錄mysql:
mysql -u root -p"youpassword"
進行授權操作:
GRANT select,insert,update,delete ON *.* TO root@"172.16.16.152" IDENTIFIED BY "youpassword";
重載授權表:
FLUSH PRIVILEGES;
退出mysql資料庫:
exit

四、刪除用戶授權,需要使用REVOKE命令,具體命令格式為:
REVOKE privileges ON 資料庫[.表名] FROM user-name;
具體實例,先在本機登錄mysql:
mysql -u root -p"youpassword"
進行授權操作:
GRANT select,insert,update,delete ON TEST-DB TO test-user@"172.16.16.152" IDENTIFIED BY "youpassword";
再進行刪除授權操作:
REVOKE all on TEST-DB from test-user;
****註:該操作只是清除了用戶對於TEST-DB的相關授權許可權,但是這個「test-user」這個用戶還是存在。
最後從用戶表內清除用戶:
DELETE FROM user WHERE user="test-user";
重載授權表:
FLUSH PRIVILEGES;
退出mysql資料庫:
exit

『叄』 MySQL為什麼root賬號密碼正確無法登陸

按照如下步驟執行:
1.找到配置文件my.ini (我的電腦的路徑:C:\Program Files (x86)\MySQL\MySQL Server 5.0) ,然後將其打開,可以選擇用記事本打開.
2.打開後,Ctrl+F 搜索[mysqld]。
找到後,在[mysqld]下面添加skip-grant-tables,保存退出。
PS:若提示不讓保存時,可以將該文件剪切到桌面,更改保存後再復制到mySQL目錄下
3.保存後重啟mySQL
4.然後運行cmd
切換到mysql的安裝目錄,在cmd中輸入:cd C:\Program Files (x86)\MySQL\MySQL Server 5.0\bin,
然後就可以執行mysql命令了。

『肆』 mysql root用戶不能登錄怎麼解決

MySQL提供跳過訪問控制的命令行參數,通過在命令行以此命令啟動MySQL伺服器:
safe_mysqld --skip-grant-tables&
即可跳過MySQL的訪問控制,任何人都可以在控制台以管理員的身份進入MySQL資料庫。
需要注意的是在修改完密碼以後要把MySQL伺服器停掉重新啟動才會生效
先找到mysql.server 然後停止mysql服務
# mysqld_safe --skip-grant-tables --skip-networking &
# mysql
>use mysql;
>update user set password=PASSWORD("new-password") where user="root";
>flush privileges;

『伍』 mysql 禁止遠程用戶用Root登陸

你只要會操作SQL語句就行了,資料庫mysql裡面有個user表,查看user="root"的記錄,把host不為localhost的都刪除就可以了。

一般另外一條記錄的host為%

我本打算在我的伺服器執行一下,把結果給你看,但是我的伺服器上已經沒用了遠程root用戶,我執行的過程如下:

E:\mysql5.0.51a\bin>mysql-uroot-p
Enterpassword:
WelcometotheMySQLmonitor.Commandsendwith;or\g.
YourMySQLconnectionidis41
Serverversion:5.0.51a-community-logMySQLCommunityEdition(GPL)

Type'help;'or'\h'forhelp.Type'\c'toclearthebuffer.

mysql>usemysql
Databasechanged
mysql>selecthost,userfromuserwhereuser="root";
+-----------+------+
|host|user|
+-----------+------+
|127.0.0.1|root|
|localhost|root|
+-----------+------+
2rowsinset(0.02sec)

如果執行上面的語句,你發現了遠程root用戶,那麼你可以用下面的語句刪除它:
delete from user where user="root" and host!="localhost";