在MySQL中修改用戶的語法如下:
創(chuàng)新互聯(lián)公司是網(wǎng)站建設(shè)技術(shù)企業(yè),為成都企業(yè)提供專業(yè)的成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì),網(wǎng)站設(shè)計(jì),網(wǎng)站制作,網(wǎng)站改版等技術(shù)服務(wù)。擁有十載豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制適合企業(yè)的網(wǎng)站。十載品質(zhì),值得信賴!
看了這么一大坨東西,感覺啥也沒有告訴我,一臉懵逼。下面我們一起來解讀一下具體的每一個(gè)選項(xiàng)的含義。
對(duì)于這個(gè)大家應(yīng)該有所了解。
首先它是被中括號(hào)包裹起來的,表示是可選的不是必須的,也就是說在我們的 alter user 語句中,這個(gè) IF EXISTS 可以不出現(xiàn)不是必須要寫的。但是為什么還要有這個(gè)呢,這個(gè)選項(xiàng)出現(xiàn)的目的是為了讓你在執(zhí)行一個(gè) alter user 語句的時(shí)候,如果語句中指定的數(shù)據(jù)庫用戶不存在(或者你寫用戶名稱的是寫錯(cuò)了),而不至于出現(xiàn)一個(gè)錯(cuò)誤的信息,如果指定了 IF EXISTS 這個(gè)詞,他就會(huì)以一個(gè)警告的信息提示你而不是直接給你一個(gè)錯(cuò)誤信息。
更直白一下就是:如果你的 alter user 的語句中指定的用戶確實(shí)存在,那么就執(zhí)行你的語句,如果不存在呢,就不執(zhí)行你的語句,跳過這個(gè) alter user 的指令。看示例:
在上面的例子中,第一個(gè)修改用戶的語句,沒有使用 if exists 關(guān)鍵詞直接修改了一個(gè)不存在的用戶的信息,結(jié)果直接出現(xiàn)了錯(cuò)誤信息,接著我們使用了 if exists 關(guān)鍵詞,結(jié)果SQL語句執(zhí)行成功,只是出現(xiàn)了一個(gè) warning 警告,然后我們通過 show warnings 命令查看警告信息的內(nèi)容,提示我們用戶 'zhangsanfeng'@'%' 不存在。這就是 if exists 關(guān)鍵詞的存在的意義。
當(dāng)我們修改一個(gè)用戶的信息的時(shí)候,我們需要指定用戶的名稱。這個(gè)名稱,不僅僅使我們平時(shí)登錄數(shù)據(jù)庫的時(shí)候,輸入的用戶的名字,還有一個(gè)隱含的部分就是用戶登錄的 host 網(wǎng)段,這個(gè)網(wǎng)段表示只允許該用戶通過這個(gè)網(wǎng)段登錄,如果用戶不在這個(gè)定義的網(wǎng)段內(nèi),即便是用戶名和密碼正確,也不能爭(zhēng)取的登錄。
下面的創(chuàng)建用戶是兩個(gè)不同的用戶。
上面的兩個(gè)用戶中,分別表示如下:
當(dāng)然,我們可以使用模糊匹配的方式來限定用戶登錄的網(wǎng)段,比如我們創(chuàng)建下面第一個(gè)用戶表示只要這個(gè)用戶登錄的時(shí)候,使用的主機(jī)的IP地址是在 10.10.0.0~10.10.255.255 這個(gè)網(wǎng)段質(zhì)檢的任何一個(gè)IP地址都可以登錄。
特殊的網(wǎng)段 localhost 。如果我們創(chuàng)建如下的用戶,則表示該用戶只能在 MySQL 數(shù)據(jù)庫所在的服務(wù)器本機(jī)上登錄。
還有另外一個(gè)特殊的網(wǎng)段 % 。它表示用戶可以通過任何一個(gè)IP地址來登錄,不對(duì)用戶登錄的主機(jī)所在的網(wǎng)段做任何限制。如下用戶就是不對(duì)它登錄的主機(jī)IP地址做任何限制。
auth_option 選項(xiàng)的含義表示指定用戶登錄數(shù)據(jù)庫的時(shí)候使用的驗(yàn)證插件和密碼。它的選項(xiàng)有如下幾種,下面我們分別展開分析一下各個(gè)選項(xiàng)的使用場(chǎng)景和示例。
如果在 IDENTIFIED 關(guān)鍵字后面沒有使用 WITH 關(guān)鍵字指定使用的密碼插件名稱,則會(huì)使用 MySQL 默認(rèn)的密碼插件。對(duì)于 MySQL 默認(rèn)的密碼插件是什么,可以使用下面的命令進(jìn)行查看:
通過上面的輸出,我們可以看出默認(rèn)的密碼插件采用的是 mysql_native_password 插件,參數(shù) default_authentication_plugin 的值是可以在 MySQL 的配置文件 my.cnf 中指定的,它可以有以下兩種取值:
MySQL 的配置文件 my.cnf 中配置默認(rèn)的密碼認(rèn)證插件的方式如下:
如果我們要修改某一個(gè)用戶的密碼認(rèn)證插件,就可以使用到 IDENTIFIED WITH auth_plugin 這個(gè)語句了。如果一個(gè)用戶它的密碼認(rèn)證插件使用的是默認(rèn)的 mysql_native_password ,我們想把它的密碼認(rèn)證插件修改為 sha256_password ,此時(shí)我們就可以使用下面的命令來修改:
執(zhí)行完成上述命令后, xyz 這個(gè)用戶的密碼就會(huì)設(shè)置為空,并更新它的密碼為已經(jīng)過期,同時(shí)更新了它的密碼認(rèn)證插件為 sha256_password ,結(jié)果如下所示:
更改用戶的密碼認(rèn)知方式之后,當(dāng) xyz 再次嘗試登錄 MySQL 數(shù)據(jù)庫的時(shí)候,輸入空密碼登錄成功后,會(huì)要求其修改一下自己的密碼,然后才可以執(zhí)行其他SQL語句的操作,這個(gè)要求和我們剛安裝 MySQL 數(shù)據(jù)庫后,第一次使用 root 登錄的時(shí)候要求修改 root 的密碼是一樣的。下面是修改完成用戶 xyz 的密碼認(rèn)證插件之后,嘗試使用空密碼登錄后的操作示例:
指定用戶的密碼認(rèn)證插件,并設(shè)置密碼。
當(dāng)我們想給用戶指定密碼的認(rèn)證插件,并且想為其設(shè)置密碼的時(shí)候,可以使用這個(gè)命令,示例如下:
這樣用戶 xyz 的密碼認(rèn)證方式修改為了 mysql_native_password ,并且修改它的密碼為 xyz 。需要我們主要的是 by 關(guān)鍵字后面跟的是密碼的明文,也就是我們嘗試登錄的時(shí)候,輸入的密碼的值。
指定用戶的密碼認(rèn)證插件,并設(shè)置密碼。
當(dāng)我們想給用戶指定密碼的認(rèn)證插件,并且想為其設(shè)置密碼的時(shí)候,可以使用這個(gè)命令,示例如下:
這樣用戶 xyz 的密碼認(rèn)證方式修改為了 mysql_native_password ,并且修改它的密碼為 xyz 。需要我們主要的是 as 關(guān)鍵字后面跟的是加密后的密碼,而不是我們的明文的密碼。如果我們想知道得到一個(gè)加密后的密碼,則可以使用下面 password() 函數(shù)來得到加密后的密碼。
這里主要是指定用戶在連接到MySQL數(shù)據(jù)庫的時(shí)候,是否需要使用加密的方式,如果使用加密的方式,則需要啟用SSL加密協(xié)議,同時(shí)也需要對(duì)MySQL進(jìn)行證書的配置。
考慮到性能的問題,使用TLS加密的方式連接MySQL數(shù)據(jù)庫會(huì)對(duì)MySQL數(shù)據(jù)庫的性能有一定的影響。非必要情況下,一般不建議啟用TLS加密連接到數(shù)據(jù)庫,因?yàn)榇蠹业腗ySQL數(shù)據(jù)庫一般都是針對(duì)內(nèi)網(wǎng)開放的。所以,啟用TLS加密協(xié)議連接沒有必要。
resource_option 選項(xiàng)中,主要是為每一個(gè)用戶設(shè)置它所能使用到資源,做資源的使用限制。示例如下:
上面四個(gè)參數(shù)的值如果為 0 ,則表示對(duì)應(yīng)的資源限制不做任何限制。
password_option 選項(xiàng)用來配置用戶的密碼,指定其密碼的效期。下面看幾個(gè)示例:
對(duì)于MySQL系統(tǒng)默認(rèn)的有效期是多少,可以通過如下命令查看,下面的值為 0 表示密碼有效期為永久有效。
lock_option 選擇是用來鎖定和解鎖用戶的。示例如下:
登入mysql:
mysql -h localhost -u root -p
然后會(huì)讓輸入密碼
查看當(dāng)前配置參數(shù)(wait_timeout為例):
show session variables like '%wait_timeout%'; (或去掉session也一樣)這是當(dāng)前會(huì)話配置參數(shù)
現(xiàn)在我們來改這個(gè)值:
set wait_timeout=90;
然后我們一起再查看下當(dāng)前配置參數(shù):
show variables like '%wait_timeout%';
這是修改當(dāng)前會(huì)話配置,當(dāng)退出再新起一個(gè)會(huì)話時(shí)就會(huì)恢復(fù)原樣。
想在所有會(huì)話都有效可以設(shè)置全局配置,參數(shù)把session改為global就可以了
set global wait_timeout=90;后再查看
show global variables like '%wait_timeout%';
再退出后重新進(jìn)入看看,值還是在。
第一:更改 “mysql” 數(shù)據(jù)庫里的 “user” 表里的 “host” 項(xiàng),從”localhost”改稱'%'。\x0d\x0a或者新加條記錄,“host” 項(xiàng)為要訪問的ip地址,并授權(quán)。重啟mysql服務(wù)。\x0d\x0a第二:在系統(tǒng)防火墻添加例外端口:3306,并允許例外。錯(cuò)誤提示:\x0d\x0aERROR 1130: Host '192.168.1.3' is not allowed to connect to this MySQL server\x0d\x0a的解決方法: 1。 改表法??赡苁悄愕膸ぬ?hào)不允許從遠(yuǎn)程登陸,只能在localhost。這個(gè)時(shí)候只要在localhost的那臺(tái)電腦,登入mysql后,更改 "mysql" 數(shù)據(jù)庫里的 "user" 表里的 "host" 項(xiàng),從"localhost"改稱"%"\x0d\x0amysql -u root -pvmwaremysqluse mysql;mysqlupdate user set host = '%' where user = 'root';mysqlselect host, user from user; 2. 授權(quán)法。例如,你想myuser使用mypassword從任何主機(jī)連接到mysql服務(wù)器的話。\x0d\x0aGRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;\x0d\x0a如果你想允許用戶myuser從ip為192.168.1.3的主機(jī)連接到mysql服務(wù)器,并使用mypassword作為密碼\x0d\x0aGRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.1.3' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;\x0d\x0a3.在window自帶的防火墻里的例外添加3306端口\x0d\x0a總結(jié):mysql -u root -p\x0d\x0amysqluse mysql;\x0d\x0amysqlselect 'host' from user where user='root';\x0d\x0amysqlupdate user set host = '%' where user ='root';\x0d\x0amysqlflush privileges;\x0d\x0amysqlselect 'host' from user where user='root';\x0d\x0a第一句是以權(quán)限用戶root登錄\x0d\x0a第二句:選擇mysql庫\x0d\x0a第三句:查看mysql庫中的user表的host值(即可進(jìn)行連接訪問的主機(jī)/IP名稱)\x0d\x0a第四句:修改host值(以通配符%的內(nèi)容增加主機(jī)/IP地址),當(dāng)然也可以直接增加IP地址\x0d\x0a第五句:刷新MySQL的系統(tǒng)權(quán)限相關(guān)表\x0d\x0a第六句:再重新查看user表時(shí),有修改。。\x0d\x0a重起mysql服務(wù)即可完成。
1、編輯MySQL(和PHP搭配之最佳組合)配置文件: windows環(huán)境中:%MySQL_installdir%\my.ini //一般在MySQL安裝目錄下有my.ini即MySQL的配置文件。 linux環(huán)境中:/etc/my.cnf 在[MySQLd]配置段添加如下一行: skip-grant-tables 保存退出編輯。 2、然后重啟MySQL服務(wù) windows環(huán)境中: net stop MySQL net start MySQL linux環(huán)境中: /etc/init.d/MySQLd restart 3、設(shè)置新的ROOT密碼 然后再在命令行下執(zhí)行: MySQL-uroot -p MySQL 直接回車無需密碼即可進(jìn)入數(shù)據(jù)庫了。 現(xiàn)在我們執(zhí)行如下語句把root密碼更新為7758521: update user set password=PASSWORD("7758521") where user='root'; quit 退出MySQL。 4、還原配置文件并重啟服務(wù) 然后修改MySQL配置文件把剛才添加的那一行刪除。 再次重起MySQL服務(wù),密碼修改完畢。 用新密碼7758521試一下吧,又能登入MySQL的感覺就是不一樣吧?
采納哦
一般linux 上都放在 /etc/my.cnf ? ,window 上安裝都是默認(rèn)可能按照上面的路徑還是沒找到, window 上 ?可以登錄到mysql中 ?使用 ? show variables like '%data%' 先找到data 存放路徑, 一般my.ini 在 data文件的上一級(jí)。
win下的是my.ini,一般會(huì)在安裝目錄的根目錄。
舉例:
Windows7電腦上的方法。
1)從任務(wù)欄找到MySQL Notifier,右鍵單擊,選擇“SQL Editor”打開
2)可以看到MySQL Workbench被打開,從左側(cè)邊欄Navigator選擇Options File;如果左側(cè)沒有Navigator,那么在右上角選擇顯示左側(cè)邊欄的選項(xiàng)。
3)在Workbench下部可以看到Configuration File所處的位置,即為my.ini的路徑。
擴(kuò)展資料:
使用 mysql --help 查看關(guān)于MYSQL對(duì)應(yīng)?配置文件my.cnf 搜索順序,windows 和linux 上都是該命令查看;? linux 上可以使用 mysql --help|grep my.cnf 過濾查看。
參考資料:mysql--MYSQL官網(wǎng)