在MySQL中修改用戶的語法如下:
創(chuàng)新互聯(lián)公司主營龍海網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,重慶APP軟件開發(fā),龍海h5小程序制作搭建,龍海網(wǎng)站營銷推廣歡迎龍海等地區(qū)企業(yè)咨詢
看了這么一大坨東西,感覺啥也沒有告訴我,一臉懵逼。下面我們一起來解讀一下具體的每一個選項的含義。
對于這個大家應(yīng)該有所了解。
首先它是被中括號包裹起來的,表示是可選的不是必須的,也就是說在我們的 alter user 語句中,這個 IF EXISTS 可以不出現(xiàn)不是必須要寫的。但是為什么還要有這個呢,這個選項出現(xiàn)的目的是為了讓你在執(zhí)行一個 alter user 語句的時候,如果語句中指定的數(shù)據(jù)庫用戶不存在(或者你寫用戶名稱的是寫錯了),而不至于出現(xiàn)一個錯誤的信息,如果指定了 IF EXISTS 這個詞,他就會以一個警告的信息提示你而不是直接給你一個錯誤信息。
更直白一下就是:如果你的 alter user 的語句中指定的用戶確實存在,那么就執(zhí)行你的語句,如果不存在呢,就不執(zhí)行你的語句,跳過這個 alter user 的指令。看示例:
在上面的例子中,第一個修改用戶的語句,沒有使用 if exists 關(guān)鍵詞直接修改了一個不存在的用戶的信息,結(jié)果直接出現(xiàn)了錯誤信息,接著我們使用了 if exists 關(guān)鍵詞,結(jié)果SQL語句執(zhí)行成功,只是出現(xiàn)了一個 warning 警告,然后我們通過 show warnings 命令查看警告信息的內(nèi)容,提示我們用戶 'zhangsanfeng'@'%' 不存在。這就是 if exists 關(guān)鍵詞的存在的意義。
當(dāng)我們修改一個用戶的信息的時候,我們需要指定用戶的名稱。這個名稱,不僅僅使我們平時登錄數(shù)據(jù)庫的時候,輸入的用戶的名字,還有一個隱含的部分就是用戶登錄的 host 網(wǎng)段,這個網(wǎng)段表示只允許該用戶通過這個網(wǎng)段登錄,如果用戶不在這個定義的網(wǎng)段內(nèi),即便是用戶名和密碼正確,也不能爭取的登錄。
下面的創(chuàng)建用戶是兩個不同的用戶。
上面的兩個用戶中,分別表示如下:
當(dāng)然,我們可以使用模糊匹配的方式來限定用戶登錄的網(wǎng)段,比如我們創(chuàng)建下面第一個用戶表示只要這個用戶登錄的時候,使用的主機的IP地址是在 10.10.0.0~10.10.255.255 這個網(wǎng)段質(zhì)檢的任何一個IP地址都可以登錄。
特殊的網(wǎng)段 localhost 。如果我們創(chuàng)建如下的用戶,則表示該用戶只能在 MySQL 數(shù)據(jù)庫所在的服務(wù)器本機上登錄。
還有另外一個特殊的網(wǎng)段 % 。它表示用戶可以通過任何一個IP地址來登錄,不對用戶登錄的主機所在的網(wǎng)段做任何限制。如下用戶就是不對它登錄的主機IP地址做任何限制。
auth_option 選項的含義表示指定用戶登錄數(shù)據(jù)庫的時候使用的驗證插件和密碼。它的選項有如下幾種,下面我們分別展開分析一下各個選項的使用場景和示例。
如果在 IDENTIFIED 關(guān)鍵字后面沒有使用 WITH 關(guān)鍵字指定使用的密碼插件名稱,則會使用 MySQL 默認(rèn)的密碼插件。對于 MySQL 默認(rèn)的密碼插件是什么,可以使用下面的命令進行查看:
通過上面的輸出,我們可以看出默認(rèn)的密碼插件采用的是 mysql_native_password 插件,參數(shù) default_authentication_plugin 的值是可以在 MySQL 的配置文件 my.cnf 中指定的,它可以有以下兩種取值:
MySQL 的配置文件 my.cnf 中配置默認(rèn)的密碼認(rèn)證插件的方式如下:
如果我們要修改某一個用戶的密碼認(rèn)證插件,就可以使用到 IDENTIFIED WITH auth_plugin 這個語句了。如果一個用戶它的密碼認(rèn)證插件使用的是默認(rèn)的 mysql_native_password ,我們想把它的密碼認(rèn)證插件修改為 sha256_password ,此時我們就可以使用下面的命令來修改:
執(zhí)行完成上述命令后, xyz 這個用戶的密碼就會設(shè)置為空,并更新它的密碼為已經(jīng)過期,同時更新了它的密碼認(rèn)證插件為 sha256_password ,結(jié)果如下所示:
更改用戶的密碼認(rèn)知方式之后,當(dāng) xyz 再次嘗試登錄 MySQL 數(shù)據(jù)庫的時候,輸入空密碼登錄成功后,會要求其修改一下自己的密碼,然后才可以執(zhí)行其他SQL語句的操作,這個要求和我們剛安裝 MySQL 數(shù)據(jù)庫后,第一次使用 root 登錄的時候要求修改 root 的密碼是一樣的。下面是修改完成用戶 xyz 的密碼認(rèn)證插件之后,嘗試使用空密碼登錄后的操作示例:
指定用戶的密碼認(rèn)證插件,并設(shè)置密碼。
當(dāng)我們想給用戶指定密碼的認(rèn)證插件,并且想為其設(shè)置密碼的時候,可以使用這個命令,示例如下:
這樣用戶 xyz 的密碼認(rèn)證方式修改為了 mysql_native_password ,并且修改它的密碼為 xyz 。需要我們主要的是 by 關(guān)鍵字后面跟的是密碼的明文,也就是我們嘗試登錄的時候,輸入的密碼的值。
指定用戶的密碼認(rèn)證插件,并設(shè)置密碼。
當(dāng)我們想給用戶指定密碼的認(rèn)證插件,并且想為其設(shè)置密碼的時候,可以使用這個命令,示例如下:
這樣用戶 xyz 的密碼認(rèn)證方式修改為了 mysql_native_password ,并且修改它的密碼為 xyz 。需要我們主要的是 as 關(guān)鍵字后面跟的是加密后的密碼,而不是我們的明文的密碼。如果我們想知道得到一個加密后的密碼,則可以使用下面 password() 函數(shù)來得到加密后的密碼。
這里主要是指定用戶在連接到MySQL數(shù)據(jù)庫的時候,是否需要使用加密的方式,如果使用加密的方式,則需要啟用SSL加密協(xié)議,同時也需要對MySQL進行證書的配置。
考慮到性能的問題,使用TLS加密的方式連接MySQL數(shù)據(jù)庫會對MySQL數(shù)據(jù)庫的性能有一定的影響。非必要情況下,一般不建議啟用TLS加密連接到數(shù)據(jù)庫,因為大家的MySQL數(shù)據(jù)庫一般都是針對內(nèi)網(wǎng)開放的。所以,啟用TLS加密協(xié)議連接沒有必要。
resource_option 選項中,主要是為每一個用戶設(shè)置它所能使用到資源,做資源的使用限制。示例如下:
上面四個參數(shù)的值如果為 0 ,則表示對應(yīng)的資源限制不做任何限制。
password_option 選項用來配置用戶的密碼,指定其密碼的效期。下面看幾個示例:
對于MySQL系統(tǒng)默認(rèn)的有效期是多少,可以通過如下命令查看,下面的值為 0 表示密碼有效期為永久有效。
lock_option 選擇是用來鎖定和解鎖用戶的。示例如下:
兩種方法,一種執(zhí)行語句update
`表名`
set
columnName
=
'測試'
WHERE
columnName
=
'檢測';還有一種在phpmyadmin里直接修改,有個編輯,修改掉也可以。
修改字段類型、字段名、字段注釋、類型長度、字段默認(rèn)值
mysql修改字段類型:
--能修改字段類型、類型長度、默認(rèn)值、注釋
--對某字段進行修改
ALTER TABLE 表名 MODIFY [COLUMN] 字段名 新數(shù)據(jù)類型 新類型長度 新默認(rèn)值 新注釋;
-- COLUMN關(guān)鍵字可以省略不寫
alter table table1 modify column column1 decimal(10,1) DEFAULT NULL COMMENT '注釋'; -- 正常,能修改字段類型、類型長度、默認(rèn)值、注釋
alter table table1 modify column1 decimal(10,2) DEFAULT NULL COMMENT '注釋';
-- 正常,能修改字段類型、類型長度、默認(rèn)值、注釋
mysql修改字段名:
ALTER TABLE 表名 CHANGE [column] 舊字段名 新字段名 新數(shù)據(jù)類型;
alter table table1 change column1 column1 varchar(100) DEFAULT 1.2 COMMENT '注釋'; -- 正常,此時字段名稱沒有改變,能修改字段類型、類型長度、默認(rèn)值、注釋
alter table table1 change column1 column2 decimal(10,1) DEFAULT NULL COMMENT '注釋' -- 正常,能修改字段名、字段類型、類型長度、默認(rèn)值、注釋
alter table table1 change column2 column1 decimal(10,1) DEFAULT NULL COMMENT '注釋' -- 正常,能修改字段名、字段類型、類型長度、默認(rèn)值、注釋
alter table table1 change column1 column2; -- 報錯
mysql alter table white_user change column name nick_name varchar(50) null comment '昵稱'; -- 正確
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0
2 修改表名
ALTER TABLE 舊表名 RENAME TO 新表名 ;
被取消的命令MySQL 之前提供了一個 rename database db_old to db_new 的命令來直接對數(shù)據(jù)庫改名,可能由于實現(xiàn)的功能不完備(比如,這條命令可能是一個超大的事務(wù),或者是由于之前的表很多還是 MyISAM 等),后來的版本直接取消了這條命令。更改數(shù)據(jù)庫名大致上有以下幾種方案:
一、mysqldump 導(dǎo)入導(dǎo)出要說最簡單的方法,就是直接用 mysqldump 工具,在舊庫導(dǎo)出再往新庫導(dǎo)入(最原始、最慢、最容易想到)的方法:舊庫 yttdb_old 導(dǎo)出(包含的對象:表、視圖、觸發(fā)器、事件、存儲過程、存儲函數(shù))
二、改整庫的表名利用 MySQL 更改表名的方法來批量把舊庫的所有表依次遍歷,改名為新庫的表。這種方法比第一種要快很多倍,但是沒有第一步操作起來那么順滑,不能一步到位。比如,要把數(shù)據(jù)庫 yttdb_old 改名為 yttdb_new,如果數(shù)據(jù)庫 yttdb_old 里只有磁盤表,那很簡單,直接改名即可。或者寫個腳本來批量改,非常簡單。但是一般舊庫里不只有磁盤表,還包含其他各種對象。這時候可以先考慮把舊庫的各種對象導(dǎo)出來,完了在逐一改完表名后導(dǎo)進去。
三、歷史方案其實在 MySQL 早期還有一種方法。假設(shè) MySQL 部署好了后,所有的 binlog 都有備份,并且二進制日志格式還是 statement 的話,那就可以簡單搭建一臺從機,讓它慢慢追主機到新的庫名,等確切要更改舊庫的時候,再直接晉升從機為主機即可。這里只需要從機配置一個參數(shù)來把舊庫指向為新庫:replicate-rewrite-db=yttdb_old-yttdb_new不過這種局限性很大,不具備標(biāo)準(zhǔn)化,不推薦。
總結(jié)其實針對 MySQL 本身改庫名,大致就這么幾種方法:
如果數(shù)據(jù)量小,推薦第一種;
數(shù)據(jù)量大,則推薦第二種;
數(shù)據(jù)量巨大,那就非 MySQL 本身能解決的了。
可通過部署第三方 ETL 工具,通過解析 MySQL 二進制日志或其他的方式來把舊庫數(shù)據(jù)直接讀取到新庫達(dá)到改名的目的等等。
網(wǎng)站題目:mysql更改怎么寫 mysql修改myini
網(wǎng)站地址:http://chinadenli.net/article12/dogdhgc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計、品牌網(wǎng)站設(shè)計、網(wǎng)站營銷、網(wǎng)站改版、域名注冊、動態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)