[TOC]
## 用戶連接MySQL
格式: `mysql [-h主機地址] -u用戶名 -p[用戶密碼]`
1. 本地連接
~~~
$ mysql -uroot -p
~~~
2. 遠程連接
~~~
$ mysql -h10.0.0.1 -uroot -p[123]
~~~
## 修改用戶密碼
格式:`mysqladmin -u用戶名 -p舊密碼 password 新密碼`
~~~
$ mysqladmin -uroot -pab12 password 456
~~~
## 增加新用戶
格式:`grant all on 數據庫.數據表 to 用戶名@登錄主機 identified by "[密碼]";`
例:增加一個用戶test1密碼為abc,讓他可以在任何主機上登錄,并對所有數據庫有查詢、插入、修改、刪除的權限。
~~~
mysql> grant select,insert,update,delete on *.* to test2@"%" identified by "abc";
~~~
## MySQL中用戶權限的控制
mysql的權限控制可以大致分為三個層面:
1. 連接上允不允許(是否能登錄到mysql服務器)
2. 數據庫層面:允許用戶操作哪些數據庫
3. 數據表層面上:允許用戶操作哪些表,并可以定義對表的操作權限:比如insert,create,update等。
此外,如果還覺得不夠精細,MySQL還可以精確到對某表某列控制操作權限。
我們在安裝MySQL的過程中,會有一個會話定義你的用戶名和密碼,這里我用的是root和123456,這個用戶名,是最開始連接到MySQL的用戶。
我們用`root`和`123456`連接登錄MySQL之后,
~~~
# 登錄mysql命令
$ mysql -u root -p;
~~~
`show databases;`可以看到有很多數據庫。
`use mysql;`
使用`mysql`數據庫,在這個數據庫里,可以看到3個表:`user`表,`db`表和`table_priv`。

查看`user`表則可以看到能登錄到MySQL的用戶信息。
用`select \*from db\G `可以從`db`表中看到哪些用戶擁有對哪些數據庫的權限。
查看`tables_priv`可以查看用戶擁有哪些表的操作權限。
新增用戶,在增加用戶的同時必須指定對庫、表的權限。
不能僅僅通過向`user`表新增記錄而成功。
~~~
mysql> insert into user (host,user,password)values('localhost','hehe','123456');
~~~
MySQL會報錯:`ERROR 1364 (HY000): Field 'ssl\_cipher' doesn't have a default value`
**正確的做法:**
`grant [權限1,權限2...] on 某庫.某表 to 新用戶名@'主機名/IP地址' identified by '[密碼]';`
如果要刪除這個用戶,用`delete`語句就可以了。
- 連接權限
我們可以定義一個用戶并讓他擁有所有庫,所有表的所有增刪改查等操作權限,語句如下:
~~~
mysql> grant all on *.* to hehe@'localhost' identified by '123456';
~~~
- 庫權限
~~~
mysql> grant all on 庫a.* to hehe@'localhost' identified by '123456';
~~~
- 表權限
~~~
mysql> grant all on 庫a.表a to hehe@'localhost' identified by '123456';
~~~
## `mysqladmin`命令
`mysqladmin`是[mysql](http://man.linuxde.net/mysql "mysql命令")服務器管理任務的客戶端工具,它可以檢查mytsql服務器的配置和當前工作狀態,創建和刪除數據庫,創建用戶和修改用戶密碼等操作。
### 語法
~~~bash
mysqladmin(選項)(參數)
~~~
### 選項
`-h`:MySQL服務器主機名或ip地址;
`-u`:連接MySQL服務器的用戶名;
`-p`:連接MySQL服務器的密碼;
`--help`:顯示幫助信息。
### 參數
管理命令:需要在MySQL服務器上執行的管理命令。
**mysqladmin支持下列命令:**
`create databasename`:創建一個新數據庫;
`drop databasename`:刪除一個數據庫及其所有表;
`extended-status`:給出服務器的一個擴展狀態消息;
`flush-hosts`:清空所有緩存的主機;
`flush-logs`:清空所有日志;
`flush-tables`:清空所有表;
`flush-privileges`:再次裝載授權表(同reload);
`kill id,id,...`:殺死mysql線程;
`password` 新口令:將老密碼改為新密碼;
`ping`:檢查mysqld是否活著;
`processlist`:顯示服務其中活躍線程列表;
`reload`:重載授權表;
`refresh`:清空所有表并關閉和打開日志文件;
`shutdown`:關掉服務器;
`status`:給出服務器的簡短狀態消息;
`variables`:打印出可用變量;
`version`:得到服務器的版本信息。
## 顯示命令
### `show`顯示數據庫,顯示庫中的表
- 顯示數據庫
~~~
mysql> show databases;
~~~
- 顯示庫中的數據表
~~~
mysql> use mysql;
mysql> show tables;
~~~
`mysql`庫很重要它里面有MYSQL的系統信息,我們改密碼和新增用戶,實際上就是用這個庫進行操作。?
### `use`使用數據庫
~~~
mysql> use dbName;
~~~
### `describe` `desc`顯示數據表的結構
~~~
mysql> describe tableName;
~~~
### `create`建庫、建表
- 建庫
~~~
mysql> create database dbName;
~~~
- 建表
~~~
mysql> create database table tableName (字段設定列表);
~~~
??
### `drop`刪庫、刪表
- 刪庫
~~~
mysql> drop database dbName;?
~~~
- 刪表
~~~
mysql> drop table tableName;
~~~
?
### 將表中記錄清空
~~~
mysql> delete from tableName;
~~~
???
### `select`顯示表中的記錄:
~~~
mysql> select * from tableName;
~~~
???
## sql文件
- `source`:導入sql文件
~~~bash
mysql> source??d:/myprogram/database/db.sql;
~~~
- `mysqldump`:導出sql文件
1. 導出整個數據庫(包括數據庫中的數據)
~~~bash
$ mysqldump -u username -ppassword dbname > dbname.sql;
~~~
2. 導出數據庫中的數據表(包括數據表中的數據)
~~~bash
$ mysqldump -u username -ppassword dbname tablename > tablename.sql;
~~~
3. 導出數據庫結構(不包括數據,只有創建數據表語句)
~~~bashbash
$ mysqldump -u username -ppassword -d dbname > dbname.sql;
~~~
4. 導出數據庫中數據表的表結構(不包括數據,只有創建數據表語句)
~~~
$ mysqldump -u username -ppassword -d dbname tablename > tablename.sql;
~~~
## `limit`分頁
語句1:
~~~
select * from student limit 9,4
~~~
語句2:
~~~
slect * from student limit 4 offset 9
~~~
上述語句均返回表student的第10、11、12、13行 ,
語句1中,`limit`第一個參數表示從該參數的下一條數據開始,第二個參數表示每次返回的數據條數。
語句2中,`4`表示返回4行,`9`表示從表的第十行開始
例,通過limit和offset 或只通過limit可以實現分頁功能。
假設 pageSize表示每頁要顯示的條數,pageNumber表示頁碼,那么 返回第pageNumber頁,每頁條數為pageSize的sql語句:
語句3:
~~~
select * from studnet limit (pageNumber-1)*pageSize,pageSize
~~~
語句4:
~~~
select * from student limit pageSize?offset (pageNumber-1)*pageSize
~~~
- WebAPP
- Linux Command
- 入門
- 處理文件
- 查找文件單詞
- 環境
- 聯網
- Linux
- Linux目錄配置標準:FHS
- Linux文件與目錄管理
- Linux賬號管理與ACL權限設置
- Linux系統資源查看
- 軟件包管理
- Bash
- Daemon/Systemd
- ftp
- Apache
- MySQL
- Command
- Replication
- mysqld
- remote access
- remark
- 限制
- PHP
- String
- Array
- Function
- Class
- File
- JAVA
- Protocals
- http
- mqtt
- IDE
- phpDesigner
- eclipse
- vscode
- Notepad++
- WebAPI
- Javasript
- DOM
- BOM
- Event
- Class
- Module
- Ajax
- Fetch
- Promise
- async/await
- Statements and declarations
- Function
- Framwork
- jQurey
- Types
- Promise
- BootStrap
- v4
- ThinkPHP5
- install
- 定時任務
- CodeIgniter
- React.js
- node.js
- npm
- npm-commands
- npm-folder
- package.json
- Docker and private modules
- module
- webpack.js
- install
- configuration
- package.json
- entry
- modules
- plugins
- Code Splitting
- loaders
- libs
- API
- webpack-cli
- Vue.js
- install
- Compile
- VueAPI
- vuex
- vue-router
- vue-devtools
- vue-cli
- vue-loader
- VDOM
- vue-instance
- components
- template
- Single-File Components
- props
- data
- methods
- computed
- watch
- Event-handling
- Render Func
- remark
- 案例學習
- bootstrap-vue
- modal
- fontAwesome
- Hosting Font Awesome Yourself
- using with jquery
- using with Vue.js
- HTML
- CSS
- plugins
- Chart.js
- D3.js
- phpSpreadSheet
- Guzzle
- Cmder
- Git
- git命令
- git流程
- Postman
- Markdown
- Regular Expressions
- PowerDesigner
- 附錄1-學習資源