1.沒辦法的辦法,ctrl+c,完全退出
韓城網(wǎng)站建設公司創(chuàng)新互聯(lián)公司,韓城網(wǎng)站設計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為韓城近1000家提供企業(yè)網(wǎng)站建設服務。企業(yè)網(wǎng)站搭建\外貿網(wǎng)站建設要多少錢,請找那個售后服務好的韓城做網(wǎng)站的公司定做!
2.可以輸入\c 廢棄本次語句,若輸入后沒效果是因為未保持當前輸入語句完整匹配
如:
mysql show tables';
'
' \c
' '\c
mysql
看你的表是否創(chuàng)建成功,要是創(chuàng)建成功了,把這個表刪除掉。使用DROP TABLE_NAME;
如果是表沒創(chuàng)建成功,把命令改回來就好了
一般提示1064 - You have an error in your SQL syntax;,都是語法的問題
可以通過下面這個方法查看mysql的語法,你的問題在于COLLATE 后沒加上參數(shù)
mysql ? create table
| CHAR[(length)]
[CHARACTER SET charset_name] [COLLATE collation_name]
| VARCHAR(length)
[CHARACTER SET charset_name] [COLLATE collation_name]
你可以試下
CREATE TABLE `user` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
`gender` enum('female','male') NOT NULL,
`birthday` date DEFAULT NULL,
`password` varchar(255) CHARACTER SET utf8 NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1
1 row in set (0.00 sec)
在MySQL中修改用戶的語法如下:
看了這么一大坨東西,感覺啥也沒有告訴我,一臉懵逼。下面我們一起來解讀一下具體的每一個選項的含義。
對于這個大家應該有所了解。
首先它是被中括號包裹起來的,表示是可選的不是必須的,也就是說在我們的 alter user 語句中,這個 IF EXISTS 可以不出現(xiàn)不是必須要寫的。但是為什么還要有這個呢,這個選項出現(xiàn)的目的是為了讓你在執(zhí)行一個 alter user 語句的時候,如果語句中指定的數(shù)據(jù)庫用戶不存在(或者你寫用戶名稱的是寫錯了),而不至于出現(xiàn)一個錯誤的信息,如果指定了 IF EXISTS 這個詞,他就會以一個警告的信息提示你而不是直接給你一個錯誤信息。
更直白一下就是:如果你的 alter user 的語句中指定的用戶確實存在,那么就執(zhí)行你的語句,如果不存在呢,就不執(zhí)行你的語句,跳過這個 alter user 的指令??词纠?/p>
在上面的例子中,第一個修改用戶的語句,沒有使用 if exists 關鍵詞直接修改了一個不存在的用戶的信息,結果直接出現(xiàn)了錯誤信息,接著我們使用了 if exists 關鍵詞,結果SQL語句執(zhí)行成功,只是出現(xiàn)了一個 warning 警告,然后我們通過 show warnings 命令查看警告信息的內容,提示我們用戶 'zhangsanfeng'@'%' 不存在。這就是 if exists 關鍵詞的存在的意義。
當我們修改一個用戶的信息的時候,我們需要指定用戶的名稱。這個名稱,不僅僅使我們平時登錄數(shù)據(jù)庫的時候,輸入的用戶的名字,還有一個隱含的部分就是用戶登錄的 host 網(wǎng)段,這個網(wǎng)段表示只允許該用戶通過這個網(wǎng)段登錄,如果用戶不在這個定義的網(wǎng)段內,即便是用戶名和密碼正確,也不能爭取的登錄。
下面的創(chuàng)建用戶是兩個不同的用戶。
上面的兩個用戶中,分別表示如下:
當然,我們可以使用模糊匹配的方式來限定用戶登錄的網(wǎng)段,比如我們創(chuàng)建下面第一個用戶表示只要這個用戶登錄的時候,使用的主機的IP地址是在 10.10.0.0~10.10.255.255 這個網(wǎng)段質檢的任何一個IP地址都可以登錄。
特殊的網(wǎng)段 localhost 。如果我們創(chuàng)建如下的用戶,則表示該用戶只能在 MySQL 數(shù)據(jù)庫所在的服務器本機上登錄。
還有另外一個特殊的網(wǎng)段 % 。它表示用戶可以通過任何一個IP地址來登錄,不對用戶登錄的主機所在的網(wǎng)段做任何限制。如下用戶就是不對它登錄的主機IP地址做任何限制。
auth_option 選項的含義表示指定用戶登錄數(shù)據(jù)庫的時候使用的驗證插件和密碼。它的選項有如下幾種,下面我們分別展開分析一下各個選項的使用場景和示例。
如果在 IDENTIFIED 關鍵字后面沒有使用 WITH 關鍵字指定使用的密碼插件名稱,則會使用 MySQL 默認的密碼插件。對于 MySQL 默認的密碼插件是什么,可以使用下面的命令進行查看:
通過上面的輸出,我們可以看出默認的密碼插件采用的是 mysql_native_password 插件,參數(shù) default_authentication_plugin 的值是可以在 MySQL 的配置文件 my.cnf 中指定的,它可以有以下兩種取值:
MySQL 的配置文件 my.cnf 中配置默認的密碼認證插件的方式如下:
如果我們要修改某一個用戶的密碼認證插件,就可以使用到 IDENTIFIED WITH auth_plugin 這個語句了。如果一個用戶它的密碼認證插件使用的是默認的 mysql_native_password ,我們想把它的密碼認證插件修改為 sha256_password ,此時我們就可以使用下面的命令來修改:
執(zhí)行完成上述命令后, xyz 這個用戶的密碼就會設置為空,并更新它的密碼為已經(jīng)過期,同時更新了它的密碼認證插件為 sha256_password ,結果如下所示:
更改用戶的密碼認知方式之后,當 xyz 再次嘗試登錄 MySQL 數(shù)據(jù)庫的時候,輸入空密碼登錄成功后,會要求其修改一下自己的密碼,然后才可以執(zhí)行其他SQL語句的操作,這個要求和我們剛安裝 MySQL 數(shù)據(jù)庫后,第一次使用 root 登錄的時候要求修改 root 的密碼是一樣的。下面是修改完成用戶 xyz 的密碼認證插件之后,嘗試使用空密碼登錄后的操作示例:
指定用戶的密碼認證插件,并設置密碼。
當我們想給用戶指定密碼的認證插件,并且想為其設置密碼的時候,可以使用這個命令,示例如下:
這樣用戶 xyz 的密碼認證方式修改為了 mysql_native_password ,并且修改它的密碼為 xyz 。需要我們主要的是 by 關鍵字后面跟的是密碼的明文,也就是我們嘗試登錄的時候,輸入的密碼的值。
指定用戶的密碼認證插件,并設置密碼。
當我們想給用戶指定密碼的認證插件,并且想為其設置密碼的時候,可以使用這個命令,示例如下:
這樣用戶 xyz 的密碼認證方式修改為了 mysql_native_password ,并且修改它的密碼為 xyz 。需要我們主要的是 as 關鍵字后面跟的是加密后的密碼,而不是我們的明文的密碼。如果我們想知道得到一個加密后的密碼,則可以使用下面 password() 函數(shù)來得到加密后的密碼。
這里主要是指定用戶在連接到MySQL數(shù)據(jù)庫的時候,是否需要使用加密的方式,如果使用加密的方式,則需要啟用SSL加密協(xié)議,同時也需要對MySQL進行證書的配置。
考慮到性能的問題,使用TLS加密的方式連接MySQL數(shù)據(jù)庫會對MySQL數(shù)據(jù)庫的性能有一定的影響。非必要情況下,一般不建議啟用TLS加密連接到數(shù)據(jù)庫,因為大家的MySQL數(shù)據(jù)庫一般都是針對內網(wǎng)開放的。所以,啟用TLS加密協(xié)議連接沒有必要。
resource_option 選項中,主要是為每一個用戶設置它所能使用到資源,做資源的使用限制。示例如下:
上面四個參數(shù)的值如果為 0 ,則表示對應的資源限制不做任何限制。
password_option 選項用來配置用戶的密碼,指定其密碼的效期。下面看幾個示例:
對于MySQL系統(tǒng)默認的有效期是多少,可以通過如下命令查看,下面的值為 0 表示密碼有效期為永久有效。
lock_option 選擇是用來鎖定和解鎖用戶的。示例如下: