數據庫MySQL 之 庫操作
阿新 • • 發佈:2018-09-01
nbsp upn log 問題 服務器 splay storage none 目錄
瀏覽目錄
-
系統數據庫簡介
-
數據庫操作
-
命名規範
-
用戶權限
-
修改密碼
-
忘記密碼
-
中文亂碼問題
一、系統數據庫簡介
- information_schema :虛擬庫,不占用磁盤空間,存儲的是數據庫啟動後的一些參數,如用戶表信息、列信息、權限信息、字符信息等
- mysql:核心數據庫,裏面包含用戶、權限、關鍵字等信息。不可以刪除
- performance_schema:mysql 5.5版本後添加的新庫,主要收集系統性能參數,記錄處理查詢請求時發生的各種事件、鎖等現象
- sys : mysql5.7版本新增加的庫,通過這個庫可以快速的了解系統的元數據信息,可以方便DBA發現數據庫的很多信息,解決性能瓶頸都提供了巨大幫助。
二.數據庫操作
1、創建數據庫
在終端輸入mysql -u root -p ‘密碼’ 進入mqsql環境
1 |
語法:CREATE DATABASE db_name charset utf8;
|
#創建一個名字為 db_name 的數據庫,並指定當前庫的編碼集為utf8 CREATE DATABASE db_name charset utf8;
2、查看數據庫
#查詢當前用戶下所有數據庫 show databases; #查看創建數據庫的信息 show create database db_name; #查詢當前操作所在的數據庫名稱 select database();
3、選擇數據庫
1 |
USE db_name;
|
4、刪除數據庫
1 |
DROP DATABASE db_name;
|
三、命名規範
- 可以由字母、數字、下劃線、@、#、$組成,最長128位且區分大小寫
- 命名需要保證唯一性
- 不能使用關鍵字、不能單獨使用數字
四、用戶權限
1、用戶管理
1 2 3 4 5 6 |
創建用戶
create user ‘用戶名‘ @ ‘IP地址‘ identified by ‘密碼‘ ;
刪除用戶
drop user ‘用戶名‘ @ ‘IP地址‘ ;
修改用戶
rename user ‘用戶名‘ @ ‘IP地址‘ ; to ‘新用戶名‘ @ ‘IP地址‘ ;
|
2、授權管理
1 2 3 |
show grants for ‘用戶‘ @ ‘IP地址‘ -- 查看權限
grant 權限 on 數據庫.表 to ‘用戶‘ @ ‘IP地址‘ -- 授權
revoke 權限 on 數據庫.表 from ‘用戶‘ @ ‘IP地址‘ -- 取消權限
|
#創建新用戶 create user ‘alex‘@‘localhost‘ identified ‘123456‘; #授權方式一:為alex授權 db1數據庫下的所有表的 查詢.更新.修改權限 grant select,update,delete on db1.* to ‘alex‘@‘localhost‘; #授權方式二:為alex 授權 所有庫的所有權限(除grant權限外) grant all privileges on *.* to ‘alex‘@‘localhost‘; #刷新用戶權限 flush privileges; 創建用戶及授權例子創建用戶及授權例子
all privileges 除grant外的所有權限 select 僅查權限 select,insert 查和插入權限 ... usage 無訪問權限 alter 使用alter table alter routine 使用alter procedure和drop procedure create 使用create table create routine 使用create procedure create temporary tables 使用create temporary tables create user 使用create user、drop user、rename user和revoke all privileges create view 使用create view delete 使用delete drop 使用drop table execute 使用call和存儲過程 file 使用select into outfile 和 load data infile grant option 使用grant 和 revoke index 使用index insert 使用insert lock tables 使用lock table process 使用show full processlist select 使用select show databases 使用show databases show view 使用show view update 使用update reload 使用flush shutdown 使用mysqladmin shutdown(關閉MySQL) super 使用change master、kill、logs、purge、master和set global。還允許mysqladmin調試登陸 replication client 服務器位置的訪問 replication slave 由復制從屬使用 權限列表權限列表
給數據庫用戶授權(對象為用戶表) GRANT privilege[, ...] ON object[, ...] TO { PUBLIC | GROUP group| username} privilege: select:查詢 insert:插入 update:更新 delete:刪除 rule: all:所有 grant select,insert,update on tablename to public; 給所有用戶授予查詢、插入、更新tablename表的權限 revoke select,insert,update on tablename from public;//收回所有用戶查詢、插入、更新tablename表的權限 object: table:表 view:視圖 sequence:序列 index:索引 grant select,insert,update on tablename,viewname,sequencename,indexname to public; public:對所有用戶開放權限 GROUP groupname:對該組所有用戶開放權限 username:對指定用戶開放權限 給數據庫用戶授權給數據庫用戶授權
五、修改密碼
方式一: mysqladmin 命令
1 |
mysqladmin -u用戶名 -p密碼 password 新密碼
|
方式二: 直接設置用戶密碼
1 2 3 |
set password for ‘用戶名‘ @ ‘IP‘ = password( ‘新密碼‘ );
flush privileges;
|
方式三:修改mysql庫下的user表
1 2 3 4 5 6 7 |
5.7版本修改密碼方式:
update mysql.user set authentication_string=password( ‘新密碼‘ ) where user= ‘用戶名‘
flush privileges; -- 刷新權限
5.6 版本
update mysql.user set password = password( ‘新密碼‘ ) where user= ‘用戶名‘
flush privileges; -- 刷新權限
|
六、忘記密碼
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
在忘記root密碼的時候,可以這樣:
#1.首先打開cmd 窗口,關閉mysql服務
net stop mysql
#2.然後跳過權限檢查,啟動mysql,輸入命令
mysqld --skip-grant-tables
#3.重新打開一個新的cmd窗口,啟動客戶端(已跳過權限檢查,可以直接登錄)
mysql
#4.直接進來,修改密碼
update mysql.user set authentication_string=password( ‘123456‘ ) where user= ‘root‘ ;
#5. 刷新權限
flush privileges;
|
七、中文亂碼問題
1.查詢字符編碼
1 |
SHOW VARIABLES LIKE ‘char%‘ ;
|
2.解決中文編碼無法顯示問題
- 創建my.ini文件,放在mysql根路徑下
- 在該文件中添加以下內容即可
- 添加此文件後需要重新啟動服務,以保證此文件生效
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
# my.ini文件內容:
[client]
default -character- set =utf8
[mysql]
#設置mysql客戶端默認字符集
default -character- set =utf8
[mysqld]
#設置3306端口
port = 3306
#允許最大連接數
max_connections=200
#服務端使用的字符集默認為8比特編碼的latin1字符集
character- set -server=utf8
#創建新表時將使用的默認存儲引擎
default -storage-engine=INNODB
#解決mysql在執行sql語句後出現1055錯誤,sql_mode = only_full_group_by不相容
sql_mode= ‘NO_ENGINE_SUBSTITUTION‘
|
註意:如果使用的是mysql5.7版本,則需要創建my.ini文件,5.7版本以前數據庫自帶my,ini文件,直接改動編碼即可.
目前最穩定與常用的數據庫版本為(5.6版本與5.5版本)
數據庫MySQL 之 庫操作