1. 程式人生 > >數據庫MySQL 之 庫操作

數據庫MySQL 之 庫操作

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 userdrop 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:刪除
    ruleall:所有
  
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 之 庫操作