一:創(chuàng)建新的數(shù)據(jù)庫、用戶并授權
以創(chuàng)建wordPress/ target=_blank class=infotextkey>WordPress網(wǎng)站的數(shù)據(jù)庫為例
1、創(chuàng)建數(shù)據(jù)庫
創(chuàng)建可指定字符,或者不指定字符,如果不指定字符,默認為 utf8mb4 和 utf8mb4_0900_ai_ci
mb4就是most bytes4的意思,專門用來兼容四字節(jié)的unicode。好在utf8mb4是utf8的超集,除了將編碼改為utf8mb4外不需要做其他轉換。當然,為了節(jié)省空間,一般情況下使用utf8也就夠了。
那上面說了既然utf8能夠存下大部分中文漢字,那為什么還要使用utf8mb4呢?
utf8 編碼最大字符長度為 3 字節(jié),如果遇到 4 字節(jié)的寬字符就會插入異常了。三個字節(jié)的 UTF-8 最大能編碼的 Unicode 字符是 0xffff,也就是Unicode 中的基本多文種平面(BMP)。也就是說,任何不在基本多文本平面的 Unicode字符,都無法使用 MySQL 的 utf8字符集存儲。包括 Emoji 表情(Emoji 是一種特殊的 Unicode 編碼,常見于 IOS 和 Android手機上),和很多不常用的漢字,以及任何新增的 Unicode 字符等等(utf8的缺點)。
#不指定字符創(chuàng)建
create database wordpress character;
#指定utf8字符創(chuàng)建
create database wordpress character set utf8;
2、創(chuàng)建用戶
可自行指定用戶可訪問的IP地址范圍。
#創(chuàng)建用戶userwordpress,僅限本機訪問,密碼123456
create user 'userwordpress'@'localhost' identified by '123456';
#創(chuàng)建用戶userwordpress,僅限192.168.10.52訪問,密碼123456
create user 'userwordpress'@'192.168.10.52' identified by '123456';
#創(chuàng)建用戶userwordpress,所有IP可以訪問,密碼123456
create user 'userwordpress'@'%' identified by '123456';
3、授權用戶
#將數(shù)據(jù)庫wordpress下的所有(*)授權給userwordpress
grant all privileges on wordpress.* to 'userwordpress'@'%';
#最后刷新權限
flush privileges;
4、直接一步到位
或者 這種方法 :創(chuàng)建并授權用戶,是二和三的合并。
grant all on wordpress.* to 'userwordpress'@'%' identified by '123456'
flush privileges;
二:查詢新的數(shù)據(jù)庫、用戶
1、查看數(shù)據(jù)庫
show databases可查詢所有存在的數(shù)據(jù)庫
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| wordpress |
+--------------------+
5 rows in set
Time: 0.008s
mysql root@(none):(none)>
2、查看用戶信息
用戶信息在系統(tǒng)數(shù)據(jù)庫mysql中的user表中。密碼查詢不會顯示明文密碼,而是顯示為加密后的密文。
select user,host,authentication_string from mysql.user;
5.7以后的版本mysql數(shù)據(jù)庫下已經(jīng)沒有password這個字段了,password字段改成了authentication_string,否則報錯:ERROR 1054 (42S22): Unknown column 'password' in 'field list'
mysql> select user,host,authentication_string from mysql.user;
+------------------+-----------+------------------------------------------------------------------------+
| user | host | authentication_string |
+------------------+-----------+------------------------------------------------------------------------+
| userwordpress | % | $A$005$v+Z!_:N3>#j |
| | | |37hnnPVHEsfeJmFXX/cI9nN144VKUFUdwVggvblw3XUa08 |
| debian-sys-maint | localhost | $A$005$T)!+a-*> |
| mysql.infoschema | localhost | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| mysql.session | localhost | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| mysql.sys | localhost | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| root | localhost | $A$005$Ietoh=j ~0 |
+------------------+-----------+------------------------------------------------------------------------+
6 rows in set
Time: 0.008s
3、查看用戶權限
有兩種方式查看。
第一種方式:show grants for 'userwordpress';
mysql > show grants for 'userwordpress';
+--------------------------------------------------------------+
| Grants for userwordpress@% |
+--------------------------------------------------------------+
| GRANT USAGE ON *.* TO `userwordpress`@`%` |
| GRANT ALL PRIVILEGES ON `wordpress`.* TO `userwordpress`@`%` |
+--------------------------------------------------------------+
2 rows in set
Time: 0.007s
第二種方式: select * from mysql.user where user='userwordpress'G;
g 相當于’;’
G使每個字段打印到單獨的行,也有 ’;' 的作用
只能查出哪個數(shù)據(jù)庫的哪張表的權限,如查userwordpress在mysql數(shù)據(jù)庫的user表的權限,顯示都是N(no),沒有權限,如果查root用戶就都是Y(yes)選擇了。
mysql> select * from mysql.user where user='userwordpress' G;
***************************[ 1. row ]***************************
Host | %
User | userwordpress
Select_priv | N
Insert_priv | N
Update_priv | N
Delete_priv | N
Create_priv | N
Drop_priv | N
Reload_priv | N
Shutdown_priv | N
Process_priv | N
File_priv | N
Grant_priv | N
References_priv | N
Index_priv | N
Alter_priv | N
Show_db_priv | N
Super_priv | N
Create_tmp_table_priv | N
Lock_tables_priv | N
Execute_priv | N
Repl_slave_priv | N
Repl_client_priv | N
Create_view_priv | N
Show_view_priv | N
Create_routine_priv | N
Alter_routine_priv | N
Create_user_priv | N
Event_priv | N
Trigger_priv | N
Create_tablespace_priv | N
ssl_type |
ssl_cipher |
x509_issuer |
x509_subject |
max_questions | 0
max_updates | 0
max_connections | 0
max_user_connections | 0
plugin | caching_sha2_password
authentication_string | $A$005$v+Z!_:N3>^T#jL^?
|37h^CnnPVHEsfeJmFXX/cI9nN144VKUFUdwVggvblw3XUa08
password_expired | N
password_last_changed | 2021-11-26 01:59:27
password_lifetime | <null>
account_locked | N
Create_role_priv | N
Drop_role_priv | N
Password_reuse_history | <null>
Password_reuse_time | <null>
Password_require_current | <null>
User_attributes | <null>
三:刪除用戶,數(shù)據(jù)庫
用drop而非delete,簡單的區(qū)分就是,drop是刪除【表】,truncate與delete則是刪除表中【記錄】。
刪除用戶
drop user 'userwordpress';
#或者
drop user 'userwordpress'@'%';
同理,刪除數(shù)據(jù)庫
drop database wordpress;
用drop刪除時,會有確認信息,為了防止誤刪。(刪庫跑路,請謹慎操作)
mysql > drop database wordpress;
You're about to run a destructive command.
Do you want to proceed? (y/n): y
Your call!
Query OK, 0 rows affected
Time: 0.005s