[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`。
![](https://img.kancloud.cn/1a/9e/1a9ed505a2e0720b4670d70dc61cd044_368x446.png)
查看`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-学习资源