MySql之授權(quán)用戶權(quán)限如何設(shè)置
MySql授權(quán)用戶權(quán)限如何設(shè)置
首先:去 mysql 庫中查看 root 用戶的權(quán)限
select * from user where user = 'root' and host='localhost';

查看root權(quán)限為所有ip都可以訪問
mysql> show grants for root; GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY PASSWORD
1、授權(quán)test用戶擁有 mydatabase 數(shù)據(jù)庫的所有權(quán)限(某個數(shù)據(jù)庫的所有權(quán)限):
mysql>grant all privileges on mydatabase.* to user@localhost identified by '123456'; mysql>flush privileges;//刷新系統(tǒng)權(quán)限表
格式:grant 權(quán)限 on 數(shù)據(jù)庫.* to 用戶名@登錄主機 identified by "密碼";
2、指定部分權(quán)限給一用戶,可以這樣來寫:
mysql>grant select,update on testDB.* to test@localhost identified by '123456'; mysql>flush privileges; //刷新系統(tǒng)權(quán)限表
3、授權(quán)test用戶擁有所有數(shù)據(jù)庫的某些權(quán)限:
mysql>grant select,delete,update,create,drop on *.* to test@"%" identified by "123456"; //test用戶對所有數(shù)據(jù)庫都有select,delete,update,create,drop 權(quán)限。 //@"%" 表示對所有非本地主機授權(quán),不包括localhost
MySQL賦予用戶權(quán)限命令總結(jié)
MySQL用戶可用權(quán)限
一個新建的MySQL用戶沒有任何訪問權(quán)限,這就意味著你不能在MySQL數(shù)據(jù)庫中進行任何操作。你得賦予用戶必要的權(quán)限。
以下是一些可用的權(quán)限:
ALL: 所有可用的權(quán)限CREATE: 創(chuàng)建庫、表和索引LOCK_TABLES: 鎖定表ALTER: 修改表DELETE: 刪除表INSERT: 插入表或列SELECT: 檢索表或列的數(shù)據(jù)CREATE_VIEW: 創(chuàng)建視圖SHOW_DATABASES: 列出數(shù)據(jù)庫DROP: 刪除庫、表和視圖grant、index、references、reload、shutdown、process等等
賦予權(quán)限基本命令格式
mysql> grant 權(quán)限1,權(quán)限2 on 數(shù)據(jù)庫名稱.表名稱 to 用戶名@用戶地址 identified by ‘連接口令’;
當(dāng)權(quán)限1,權(quán)限2,…被all privileges或者all代替,表示賦予用戶全部權(quán)限。
當(dāng)數(shù)據(jù)庫名稱.表名稱被*.*代替,表示賦予用戶操作服務(wù)器上所有數(shù)據(jù)庫所有表的權(quán)限。
用戶地址可以是localhost,也可以是ip地址、機器名字、域名。也可以用'%'表示從任何地址連接。
‘連接口令’不能為空,否則創(chuàng)建失敗。
在MySQL安裝完成后,為了確保數(shù)據(jù)庫的安全性,通常我們都使用mysqladmin命令給數(shù)據(jù)管理員root用戶添加密碼,允許遠(yuǎn)程登錄并賦予所有權(quán)限。
例1
mysql> grant all privileges on *.* to 'root'@'%' identified by 'abc123' with grant option;
賦予所有特殊權(quán)限給root用戶,可以從任何IP地址遠(yuǎn)程登錄,密碼為abc123,且擁有g(shù)rant賦予權(quán)限的權(quán)限
例2
mysql> grant select,insert,update,delete,create,drop on school.info to test@192.168.100.100 identified by '123';
給來自192.168.100.100的用戶test分配可對數(shù)據(jù)庫school的info表進行select,insert,update,delete,create,drop等操作的權(quán)限,并設(shè)定口令為123。
例3
mysql> grant all privileges on school.* to test@192.168.100.100 identified by '123';
給來自192.168.100.100的用戶test分配可對數(shù)據(jù)庫school所有表進行所有操作的權(quán)限,并設(shè)定口令為123。
例4
mysql>grant all privileges on *.* to test@localhost identified by '123';
給本機用戶test分配可對所有數(shù)據(jù)庫的所有表進行所有操作的權(quán)限,并設(shè)定口令為123。
注:在mysql模式中,當(dāng)賦予用戶權(quán)限或者權(quán)限設(shè)定后,重要的一步使得命令立即生效:
mysql>flush privileges
忘記密碼 重置密碼
systemctl stop mysqld.service mysqld --skip-grant-tables 啟動數(shù)據(jù)庫不使用授權(quán)表 source /etc/profile
mysql 進入數(shù)據(jù)庫
update mysql.user set authentication_string=password ('123456') where user='root';
flush privileges; 刷新數(shù)據(jù)庫
init 6 重啟注:若是想默認(rèn)直接跳過賬戶驗證,可直接通過在主配置文件中添加:
vim /etc/my.cnf
[mysqld] skip-grant-tables ? ? ?//添加跳過驗證命令 user=mysql basedir = /usr/local/mysql datadir = /usr/local/mysql/data port = 3306 ....
重啟MySQL服務(wù)
systemctl restart mysqld.service
如上,當(dāng)再次進入MySQL時即可跳過驗證,直接進入。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
mysql?sql_mode數(shù)據(jù)驗證檢查方法
sql_mode?會影響MySQL支持的sql語法以及執(zhí)行的數(shù)據(jù)驗證檢查,通過設(shè)置sql_mode?,可以完成不同嚴(yán)格程度的數(shù)據(jù)校驗,有效地保障數(shù)據(jù)準(zhǔn)確性,這篇文章主要介紹了mysql?sql_mode數(shù)據(jù)驗證檢查,需要的朋友可以參考下2023-08-08
Mysql中有關(guān)Datetime和Timestamp的使用總結(jié)
mysql數(shù)據(jù)庫常用的時間類型有timestamp和datetime,兩者主要區(qū)別是占用存儲空間長度不一致、可存儲的時間也有限制,本文就來詳細(xì)的介紹一下,感興趣的可以了解一下2021-12-12
MySQL關(guān)于字符串中數(shù)字排序的問題分析
這篇文章主要介紹了MySQL關(guān)于字符串中數(shù)字排序的問題,結(jié)合實例形式分析了mysql按照數(shù)值排序的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下2016-06-06

