MySQL 常用語句以及基礎知識
阿新 • • 發佈:2018-08-13
字符集 into 腳本文件 自己 leg creat 我們 mysql服務器 多表查詢 RHEL7安裝MariaDB
Yum install –y mariadb mariadb-server
Mysql_installdb //初始化數據庫
? 可以為root帳戶設置密碼。
? 可以刪除root可從本地主機以外訪問的帳戶。
? 可以刪除匿名用戶帳戶。
? 可以刪除test數據庫(默認情況下,所有用戶甚至匿名用戶都可以訪問該數據庫)以及允許任何人訪問以名稱開頭的數據庫的權限 test。
如果不初始化數據庫,mysql可以匿名登陸,會生成test數據庫
.
.
.
.
.
Mysqld_safe & //平滑啟動數據庫 &是後臺運行的意思
Systemctl start mariadb //啟動數據庫
Mysqladmin shutdown //關閉數據庫
Systemctl stop mariadb //停止數據庫
.
.
.
.
.
.
Mysql –uusername –ppassword //指定用戶和密碼登陸數據庫 密碼可不輸入(單獨輸入)
Mysql –uusername –ppassword –D mysql //-D 指定進入數據庫
Mysql –S /var/lib/mysql/mysql.sock //sock套接字文件 指定套接字文件sock來連接數據庫
Mysql –h (ip地址) //指定登陸一臺主機上的數據庫 前提是指定的主機開啟並運行你連接
Mysql –e “use mysql;select user,host,password from user;” //-e 通過shell進行直接控制連接數據庫
-P 指定服務端端口
-C 壓縮數據傳輸
-E 查詢結果縱向顯示 (庫外操作)
.
.
.
.
.
數據庫的創建:
Use mysql //切換數據庫
Select user,host,password from user; //查詢user表中user,host,password列
Create user ‘xiaoquan’@’localhost’ identified by ‘123’
Create database if not exists testdb; //如果testdb庫存在就不創建
.
.
.
密碼管理
在庫外設置數據庫密碼
mysqladmin –uroot password 123 //設置密碼
Mysqladmin –uroot –p123 password linux
在庫內設置密碼
Set password for ‘root’@’localhost’=password(‘123’J)’
.
.
.
MariaDB [(none)]> use mysql
MariaDB [mysql]> Insert into mysql.user(user,host,password) values(‘zhang’,’localhost’,password(‘123’)); //在mysql庫中的user表中的user,host,password字段中插入數據(必須在庫內!)
Grant all on mysql.* to ‘zhangsan’@’localhost’ identified by ‘123’; //授權數據庫 如果用戶不存在將會自動建立用戶
.
.
刪除用戶:
1)Delete from mysql.user where user=’zhangsan’ and password=’123’;
Flush privileges //刪除和創建後都需要刷新!!!
2)drop user ‘zhang’@’localhost’;
重命名:
Rename user ‘xiaoquan’@’localhost’ to ‘zhang’@’localhost’;
3)5.7版本不可以使用!
Update mysql.user set password = password(‘xiaoquan’) where user=’root’ and host=’localhost’;
.
.
.
Mysql 密碼破解
Yum install –y mariadb mariadb-server
Mysql_installdb //初始化數據庫
? 可以為root帳戶設置密碼。
? 可以刪除root可從本地主機以外訪問的帳戶。
? 可以刪除匿名用戶帳戶。
? 可以刪除test數據庫(默認情況下,所有用戶甚至匿名用戶都可以訪問該數據庫)以及允許任何人訪問以名稱開頭的數據庫的權限 test。
如果不初始化數據庫,mysql可以匿名登陸,會生成test數據庫
.
.
.
.
.
Mysqld_safe & //平滑啟動數據庫 &是後臺運行的意思
Systemctl start mariadb //啟動數據庫
Systemctl stop mariadb //停止數據庫
.
.
.
.
.
.
Mysql –uusername –ppassword //指定用戶和密碼登陸數據庫 密碼可不輸入(單獨輸入)
Mysql –uusername –ppassword –D mysql //-D 指定進入數據庫
Mysql –S /var/lib/mysql/mysql.sock //sock套接字文件 指定套接字文件sock來連接數據庫
Mysql –h (ip地址) //指定登陸一臺主機上的數據庫 前提是指定的主機開啟並運行你連接
Mysql –e “use mysql;select user,host,password from user;” //-e 通過shell進行直接控制連接數據庫
-C 壓縮數據傳輸
-E 查詢結果縱向顯示 (庫外操作)
.
.
.
.
.
數據庫的創建:
Use mysql //切換數據庫
Select user,host,password from user; //查詢user表中user,host,password列
Create user ‘xiaoquan’@’localhost’ identified by ‘123’
Create database if not exists testdb; //如果testdb庫存在就不創建
.
.
.
密碼管理
在庫外設置數據庫密碼
mysqladmin –uroot password 123 //設置密碼
Mysqladmin –uroot –p123 password linux
Set password for ‘root’@’localhost’=password(‘123’J)’
.
.
.
MariaDB [(none)]> use mysql
MariaDB [mysql]> Insert into mysql.user(user,host,password) values(‘zhang’,’localhost’,password(‘123’)); //在mysql庫中的user表中的user,host,password字段中插入數據(必須在庫內!)
Grant all on mysql.* to ‘zhangsan’@’localhost’ identified by ‘123’; //授權數據庫 如果用戶不存在將會自動建立用戶
.
.
刪除用戶:
1)Delete from mysql.user where user=’zhangsan’ and password=’123’;
Flush privileges //刪除和創建後都需要刷新!!!
2)drop user ‘zhang’@’localhost’;
重命名:
Rename user ‘xiaoquan’@’localhost’ to ‘zhang’@’localhost’;
3)5.7版本不可以使用!
Update mysql.user set password = password(‘xiaoquan’) where user=’root’ and host=’localhost’;
.
.
.
Mysql 密碼破解
- 停止mysql
Mysqladmin shutdown - 使用—skip-grant-tables啟動mysql
Mysqld_safe –skip-grant-tables & - Update mysql.user set password=password(‘123’) where user=’root’ and host=’localhost’;
重啟數據庫
.
.
.
.
.
授權管理
授權語法:grant all [privileges] on db.tbl ‘username’@’host’ identified by ‘password’;
Grant all on . to ‘xiaoquan’@’localhost’ identified by ‘xiaoquan’; //將本地所有庫和表的權限授權給xiaoquan
Grant all on . to ‘xiaoquan’@’%’ identified by ‘xiaoquan’; //給所有主機上有用戶xiaoquan的授權
Grant select on mysql.user to ‘zhang’@’localhost’ identified by ‘123’; //指定授權用戶可以查詢庫中的表
Show grants for ‘zhang’@’localhost’\G //查看權限
Revoke select on mysql.user from ‘zhang’@’localhost’; //刪除權限
.
.
.
.
.
.
數據庫變量:
Show global variables\G //查看所有全局變量
Show global variables like ‘%version%\G //查看與版本version有關的全局變量
Like 關鍵字匹配 % 通配符相當於*
Show global variables where variable_name like ‘charavter%’; //global 全局 variables 變量 where 指定條件 variable_name 變量名 like 匹配 //查看全局與字符集相關的變量
Show global variables where variable_name like ‘%log%’ and value=’off’; //查看日誌關閉的全局參數
Show session variables\G //查看回話參數
Show variables \G //不知名變量參數 默認的為session 回話參數
.
.
Select @@[global.|session.] system_var_name //查看單個變量的語法
Select @@global.pid_file; //查看pid_file變量參數
.
.
MariaDB [(none)]> select @@session.autocommit; //查詢autocommit變量
修改語法:(不指定類型,默認修改會話變量)
MariaDB [(none)]> SET GLOBAL var_name = value;
MariaDB [(none)]> SET @@GLOBAL.var_name = value;
MariaDB [(none)]> SET SESSION var_name = value;
MariaDB [(none)]> SET @@SESSIO.var_name = value;
Set @@session.autoconmmit=0; //修改autocommint參數
運行時修改的變量並非永久有效,重啟後將會失效;
運行時修改global級別的變量:對修改之前建立的會話沒有影響,僅對修改後新建立的會話有效;
運行時修改session級別的變量:僅對當前會話有效,且立即生效;
如果想要使設定永久有效,需要設置配置文件。
但是在不確定的情況下,不要隨便修改配置文件,否則將可能會出現無法預計的問題
.
.
.
MYSQL help參數:
清除(\c)清除當前輸入語句。
連接(\r)重新連接到服務器。可選的參數是DB和主機。
定界符(\d)SET語句定界符。
用編輯器編輯(\e)編輯命令。
(\g)向MySQL服務器發送命令,垂直顯示結果。
退出(\q)退出mysql。與退出相同。
轉到(\g)發送命令到MySQL服務器。
打印(\p)打印當前命令。
提示(\r)更改MySQL提示符。
退出(\q)退出mysql。
源代碼(.)執行SQL腳本文件。將文件名作為參數。
狀態(S)從服務器獲取狀態信息。
系統(!)執行系統外殼命令。
使用(\u)使用另一個數據庫。將數據庫名稱作為參數。
字符集(\c)切換到另一字符集。可能需要用多字節字符集來處理BILCONG。
警告(\w)在每個語句之後顯示警告。
(\W)在每個語句之後不顯示警告。
.
.
.
.
.
MySQL的概念
1)什麽是數據庫
按照數據的關系,組織、管理、存儲的系統
2)數據庫的分類
關系型:Oracle 、 MySQL 、 SQL-server
數據都是按照表狀結構存儲,二維關系,表與表之間可以建立聯系,多表查詢,可以跨越版本、跨越不同軟件,將數據導入導出
都是基於SQL(結構化查詢語句)
非關系型:Redis memache mongodb
NoSQL = not only SQL ,對關系型數據庫的一個補充,大大提高的查詢檢索效率,把所有數據都同意存儲,都有自己的,不存在數據的鏈接
當前企業使用MySQL的版本分布:
5.1 ----- 20%
5.5 ----- 60%
5.6或以上 ----- 20%
Oracle 和 MySQL
Oracle: 應用傳統行業(金融、證券、大學等),臃腫,閉源(收費)
MySQL: 應用於互聯網行業(BAT 58 jd等等),我們都是根據系統進行二次開發使用,開源的(RHEL6.x 默認5.1系統 -- RHEL7.x 默認mariadb5.5)
2008年左右 MySQL被SUN公司收購,2012年SUN公司又被Oracle收購(JDK也是Oracle),MySQL很有可能閉源
MySQL公司有開發一款和MySQL完全相同的數據庫MariaDB
a)安裝方式:
yum/rpm 安裝
源碼安裝(cmake安裝) --- 運維,針對設備少時
二進制安裝 --- 開發,針對集群架構較大時
b)MySQL版本:
商業版: 收取lisence費用 服務費用 -- 針對大公司
社區版: 免費版,個人用、小公司
四大發行版本:
Alpha---預覽版(內部測試版本),開發人員使用,完全不對外,測試大的bug
Beta---測試版(公開測試版),加入很多新功能,邀請比較不錯的用戶嘗試使用---BAT公司使用
RC----發行版本,可能會有小bug ,但是能滿足較大的需求
GA----穩定發行版本(沒有任何的後綴,就是這個版本)
數據庫總結:
create 創建
delete | drop刪除
grant 授權
revoke 刪除權限
select 查詢
set 修改
show 顯示
rename 重命名
MySQL 常用語句以及基礎知識