MySQL用户管理及SQL入门
生活随笔
收集整理的這篇文章主要介紹了
MySQL用户管理及SQL入门
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
第1章?Mysql用戶管理:
1.1?用戶的定義:??用戶名+主機域??
mysql>?select?user,host,password?from?mysql.user;
+------+-----------+----------+
|?user?|?host??????|?password?|
+------+-----------+----------+
|?root?|?localhost?|??????????|
|?root?|?db01??????|??????????|
|?root?|?127.0.0.1?|??????????|
1.2?用戶的作用:
1.??????用來登錄數據庫
2.??????管理數據的對象(表和庫)
說明:類比:Linux中創建用戶,更改某個目錄或者文件的權限來對數據進行管理
1.2.1?創建一個用戶
權限設定:?grant?權限?on?權限范圍?to?用戶??identified?by?‘密碼’;
1.2.2?權限管理:
對數據庫的讀寫操作等,權限可用來管理某個用戶可以對數據庫做什么
(insert?update、select、delete、drop、create等)
1.2.3?角色:
對數據庫讀,寫等操作(insert;update;select)
1.2.4?權限范圍:
1.??????全庫級別:?*.*
2.??????單庫級別:?test.*
3.??????單表級別:?test.table_name
1.2.5?用戶:'clsn'@'localhost'??本地'clsn'@'192.168.66.149''clsn'@'192.168.66.%'
'clsn'@'192.168.66.14%'
1.3?練習:按照要求創建一個用戶
用戶只能通過10.0.0.0/24網段訪問,用戶名為jiang,密碼為123
jiang用戶只能對jiang數據庫下的對象進行增insert;create;改update;查select
1.3.1?創建用戶并授權
grant?insert,select,create,update?on?jiang.*?to?‘jiang@10.0.0.%’?identified?by?‘123’;
1.3.2?查看用戶的權限:
mysql>?show?grants?for?root@'10.0.0.%'\G
***************************?1.?row?***************************
Grants?for?root@10.0.0.%:?GRANT?ALL?PRIVILEGES?ON?*.*?TO?'root'@'10.0.0.%'?IDENTIFIED?BY?PASSWORD?'*23AE809DDACAF96AF0FD78ED04B6A265E05AA257'
1?row?in?set?(0.01?sec)
1.3.3?標準創建用戶的方法:
create?user?'web'@'172.16.1.%'?identified?by?'web123';???這樣創建的用戶只有連接的權限
1.3.4?刪除用戶:
mysql>?drop?user?root@'10.0.0.%';
1.3.5?回收權限
revoke?insert?on?*.*?from?root@’localhos’;
1.4?Mysql忘記密碼的修改辦法:
1.??????停掉數據庫
/etc/init.d/mysqld?stop
2.??????停掉連接層的授權功能和遠程登錄動能,并啟動
cd?/application/mysql/bin/
mysqld_safe?--skip-grant-table?--user=mysql?--skip-networking?&
說明:這種啟動模式下,無密碼登錄,網絡用戶無法登錄,只能本地登錄,和授權有關的命令都無法執行
3.??????直接修改密碼
mysql>?update?mysql.user?set?password=password('123')?where?user='root'?and?host='localhost';
mysql>?flush?privileges;
MySQL5.7版本修改密碼的修改字段為:?authentication_string
4.??????退出,重啟服務,正常restart就可以,我這里失敗了,所以先停止在啟動
/etc/init.d/mysqld?stop
/etc/init.d/mysqld?start
5.??????登錄數據庫進行驗證
mysql?-uroot?-p123
第2章?Mysql客戶端工具及SQL入門
2.1?MySQL客戶端命令有哪些?
1.??????mysql?????---用來連接數據庫
---將用戶的SQL語句發送到服務端
2.??????mysqladmin---命令行管理工具
3.??????mysqldump---備份數據庫和表的內容
2.2?mysql命令功能詳解:
1.??????用戶連接數據庫
2.??????用于管理數據庫
2.2.1?mysql命令接口自帶功能:
命令????命令說明????
\h?或?help?或???????獲取幫助????
\G????格式化輸出(行轉列)????
\T?或?tee????記錄操作日志??tee?/tmp/mysql.log????
\c?或?CTRL+c????退出mysql????
\s?或?status????查看數據庫狀態信息????
\.?或?source????mysql>?source???/tmp/world.sql????
\!????使用shell中的命令?mysql>?\!???cat?/etc/redhat-releaseCentOS???release?6.9?(Final)?????
\u?或use???????use??worldshow???databases??看當前所有數據庫的名字show???tables???查看當前use到的數據庫所有的表show??tables???from?world???查看目標數據庫下的表????
快捷鍵????上下翻頁、TAB鍵、ctrl???+C?、ctrl?+L????
2.2.2?mysql命令中help幫助說明:
contents查看完整的sql類別列表幫助
mysql>?help?contents
查看特定sql類別或語句的幫助
mysql>?help?Account?Management;
查看grant幫助
mysql>?help?grant
與狀態相關的sql語句幫助
mysql>?help?status
mysqladmin命令說明:
功能選項????說明????
mysqladmin?-u用戶?-p密碼?ping????“強制回應?(Ping)”服務器。????
mysqladmin?-u用戶?-p密碼?shutdown????關閉服務器。????
mysqladmin?-u用戶?-p密碼?create???databasename????創建數據庫。????
mysqladmin?-u用戶?-p密碼drop???databasename????刪除數據庫????
mysqladmin?-u用戶?-p密碼?version????顯示服務器和版本信息????
mysqladmin?-u用戶?-p密碼?status????顯示或重置服務器狀態變量????
mysqladmin?-u用戶?-p密碼?password????設置口令????
mysqladmin?-u用戶?-p密碼?flush-privileges????重新刷新授權表。????
mysqladmin?-u用戶?-p密碼?flush-logs????刷新日志文件和高速緩存。????2.3?SQL語句入門:
2.3.1?DDL:???數據定義語言
定義范圍:對庫名和庫的特性??????對表名和表中的列
查看數據庫
查看所有數據庫
mysql>?show?databases;
+--------------------+
|?Database???????????|
+--------------------+
|?information_schema?|
|?mysql??????????????|
|?performance_schema?|
|?test???????????????|
|?world??????????????|
|?zabbix?????????????|
+--------------------+
查看當前所在數據庫
mysql>?select?database();
+------------+
|?database()?|
+------------+
|?zabbix?????|
+------------+
1?row?in?set?(0.00?sec)
對數據庫的操作
創建一個庫
mysql>?create?database?zabbix?character?set?utf8;
Query?OK,?1?row?affected?(0.01?sec)
查看庫中的表
mysql>?show?tables;
+------------------+
|?Tables_in_zabbix?|
+------------------+
|?stu??????????????|
+------------------+
1?row?in?set?(0.00?sec)
查看庫的創建語句
mysql>?show?create?database?zabbix;??
+----------+-----------------------------------------------------------------+
|?Database?|?Create?Database?????????????????????????????????????????????????|
+----------+-----------------------------------------------------------------+
|?zabbix???|?CREATE?DATABASE?`zabbix`?/*!40100?DEFAULT?CHARACTER?SET?utf8?*/?|
+----------+-----------------------------------------------------------------+
1?row?in?set?(0.00?sec)
修改庫的屬性:只能修改字符集和校對規則
mysql>?alter?database?zabbix?charset?utf8mb4;
刪除一個庫:
mysql>?drop?database?zabbix;
切庫
mysql>?use?zabbix;
對表的操作
創建一個表
mysql>?create?table?stu?(id?int,name?varchar(20),age?int?,gender?int);
查看表的創建語句
mysql>?show?create?table?stu;
在表最后一列添加:
mysql>?alter?table?stu?add?addr?varchar(20);
在表的頭部添加:
mysql>?alter?table?stu?add?stu_id?int?first;
在某一列后面添加:
mysql>?alter?table?stu?add?qq?int?after?name;
在age后添加tel_num,在最后一行添加email
mysql>?alter?table?stu?add?tel_num?int?after?age,add?email?varchar(20);
刪除某一列:
mysql>?alter?table?stu?drop?email;
修改列名字:
mysql>?alter?table?stu?change?qq?QQ?int;
修改列的數據類型:
mysql>?alter?table?stu?modify?gender?varchar(20);
創建一個表結構相同的空表
mysql>?create?table?stu_0?like?stu;
mysql>?show?tables;
+------------------+
|?Tables_in_zabbix?|
+------------------+
|?stu??????????????|
|?stu_0????????????|
+------------------+
2?rows?in?set?(0.00?sec)
創建一個表結構相同的備份表
mysql>?create?table?stu_0?as?select?*?from?stu;
2.3.2?DCL??????數據庫控制語言
用戶授權
GRANT?ALL?ON?*.*?TO?'jiang'@'localhost';
SHOW?GRANTS?FOR?'jiang'@'localhost'\G
創建用戶的同時進行授權
grant?insert,select,create,update?on?jiang.*?to?jiang@'10.0.0.%'?identified?by?'123';
回收權限
REVOKE?INSERT?ON?*.*?FROM?jiang@localhost;
2.3.3?DML??????數據行操作語言(增刪改)
insert語句
指定列插入
mysql>?insert?into?stu?(stu_id,QQ)?values(1,777);
所有列插入
mysql>?insert?into?stu?values(2,777,'j',56,'hao',2,'r','q',1);
insert復制表結構及內容---表已經存在的情況下,在可以復制
mysql>?create?table?stu_1?like?stu;
mysql>?insert?into?stu_1?select?*?from?stu;
修改和刪除操作
刪除數據:
mysql>?delete?from?stu?where?stu_id=1????????邏輯刪除
mysql>?truncate?table?stu_3;?????????????????物理刪除
修改數據,要加上where條件
mysql>?update?stu_3?set?QQ=5656?where?age='hao';
delete????刪除之后可以用二進制日志反解insert命令把數據找回來
truncate???物理刪除,數據找不回來
一般刪除大表的時候,先truncate然后在drop整個表,效率會比較高
使用update替代delete,偽刪除
mysql>?alter?table?stu?add?state?int?default?1;
Query?OK,?0?rows?affected?(0.54?sec)
Records:?0??Duplicates:?0??Warnings:?0mysql>?select?*?from?stu;
+--------+------+-------+-----------+------+---------+--------+------+-------+
|?stu_id?|?id???|?name??|?QQ????????|?age??|?tel_num?|?gender?|?addr?|?state?|
+--------+------+-------+-----------+------+---------+--------+------+-------+
|??????1?|??123?|?jiang?|???????222?|?ni???|???15555?|?boy????|?hao??|?????1?|
|??????1?|??123?|?jiang?|???????222?|?ni???|???15555?|?boy????|?hao??|?????1?|
|??????1?|??123?|?jiang?|???????222?|?ni???|???15555?|?boy????|?hao??|?????1?|
|??????7?|?NULL?|?da?ya?|?850144102?|?NULL?|????NULL?|?NULL???|?NULL?|?????1?|
+--------+------+-------+-----------+------+---------+--------+------+-------+
4?rows?in?set?(0.00?sec)
修改state值,等于0即為刪除,
mysql>?update?stu?set?state=0?where?name='jiang';
mysql>?select?*?from?stu?where?state=1;
+--------+------+-------+-----------+------+---------+--------+------+-------+
|?stu_id?|?id???|?name??|?QQ????????|?age??|?tel_num?|?gender?|?addr?|?state?|
+--------+------+-------+-----------+------+---------+--------+------+-------+
|??????7?|?NULL?|?da?ya?|?850144102?|?NULL?|????NULL?|?NULL???|?NULL?|?????1?|
+--------+------+-------+-----------+------+---------+--------+------+-------+
1?row?in?set?(0.01?sec)
防止誤刪除:-U,?--safe-updates??Only?allow?UPDATE?and?DELETE?that?uses?keys.
mysql命令加上-U后???在執行update和delete語句時,不加where條件不會執行
2.3.4?DQL:數據行查詢語言
select查詢語句
查看stu表中所有信息
mysql>?select?*?from?stu;????
查看某一列的信息
mysql>?select?name?from?stu;?????多個列用逗號分隔
查看id號碼為777的qq號碼
mysql>?select?QQ?from?stu?where?id=777;
where子句使用:?將數據按照指定條件,進行過濾處理
等值過濾:
mysql>?select?stu_id?from?stu?where?QQ=777;
比較過濾:
mysql>?select?stu_id?from?stu?where?QQ<777;
SQL過濾練習:
排序:按照人口從少到多的順序排列顯示:
SELECT?NAME,Population?FROM?city
WHERE?CountryCode='chn'?ORDER?BY?Population;
按照從多到少進行排序顯示:
SELECT?NAME,Population?FROM?city
WHERE?CountryCode='chn'?ORDER?BY?Population?DESC;
顯示人口排名最多的前10名:
SELECT?NAME,Population?FROM?city
WHERE?CountryCode='chn'
ORDER?BY?Population?DESC?LIMIT?10;
顯示人口排名?第50行到第60行
SELECT?NAME,Population?FROM?city
WHERE?CountryCode='chn'
ORDER?BY?Population?DESC?LIMIT?50,10;
顯示世界上人口小于100的城市:
SELECT?NAME,PopulationFROM?city?WHERE?Population<1000;
顯示PCN是那個國家:
SELECT?NAME?FROM?city?WHERE?country='PCN';
顯示世界上人口小于100的城市所在國家的國家名字
SELECT?country.name?FROM?country,city
WHERE?city.Population<100?AND?country.Code=city.countrycode;
以上命令可以簡寫成:
SELECT??co.name?FROM?city?AS??ci?,country?AS?co
WHERE
ci.population<100
AND?co.code=ci.CountryCode;
轉載于:https://blog.51cto.com/13520772/2094425
總結
以上是生活随笔為你收集整理的MySQL用户管理及SQL入门的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 虚拟机中RedHat Linux系统安装
- 下一篇: 四则运算结对编程