用户的操作

创建用户

8.0以前
  1. grant all on *.* to cao@'192.168.0.%' identified by '123';

8.0以后
  1. create user cao@'192.168.0.%' identified by '123';
  2. select user,host from mysql.user;

修改用户密码

  1. alter user cao@'192.168.0.%' identified by '123456';

删除用户

  1. drop user cao@'192.168.0.%';

用户权限的操作

  1. ALL(常用的所有)
  2. with grant option(给其他用户授权的权限)
  3. 常用的权限:
  4. Select:确定用户是否可以通过SELECT命令选择数据
  5. Insert:确定用户是否可以通过INSERT命令插入数据
  6. Update:确定用户是否可以通过UPDATE命令修改现有数据
  7. Delete:确定用户是否可以通过DELETE命令删除现有数据
  8. Create:确定用户是否可以创建新的数据库和表
  9. Drop:确定用户是否可以删除现有数据库和表
  10. Reload:确定用户是否可以执行刷新和重新加载MySQL所用各种内部缓存的特定命令,包括日志、权限、主机、查询和表
  11. Shutdown:确定用户是否可以关闭MySQL服务器,将此权限提供给root账户之外的任何用户时,都应当非常谨慎
  12. Process:确定用户是否可以通过SHOW
  13. File:确定用户是否可以执行SELECT INTO OUTFILELOAD DATA INFILE命令
  14. Grant:确定用户是否可以将已经授予给该用户自己的权限再授予其他用户,例如,如果用户可以插入、选择和删除foo数据库中的信息,并且授予了GRANT权限,则该用户就可以将其任何或全部权限授予系统中的任何其他用户
  15. References:目前只是某些未来功能的占位符,现在没有作用
  16. Index:确定用户是否可以创建和删除表索引
  17. Alter:确定用户是否可以重命名和修改表结构
  18. Show_db:确定用户是否可以查看服务器上所有数据库的名字,包括用户拥有足够访问权限的数据库,可以考虑对所有用户禁用这个权限,除非有特别不可抗拒的原因
  19. Super:确定用户是否可以执行某些强大的管理功能,例如通过KILL命令删除用户进程,使用SET GLOBAL修改全局MySQL变量,执行关于复制和日志的各种命令
  20. Create_tmp_table:确定用户是否可以创建临时表
  21. Lock_tables:确定用户是否可以使用LOCK
  22. Execute:确定用户是否可以执行存储过程,此权限只在MySQL 5.0及更高版本中有意义
  23. Repl_slave:确定用户是否可以读取用于维护复制数据库环境的二进制日志文件,此用户位于主系统中,有利于主机和客户机之间的通信
  24. Repl_client:确定用户是否可以确定复制从服务器和主服务器的位置
  25. Create_view:确定用户是否可以创建视图,此权限只在MySQL 5.0及更高版本中有意义
  26. Show_view:确定用户是否可以查看视图或了解视图如何执行,此权限只在MySQL 5.0及更高版本中有意义 Create_routine:确定用户是否可以更改或放弃存储过程和函数,此权限是在MySQL 5.0中引入的 Alter_routine:确定用户是否可以修改或删除存储函数及函数,此权限是在MySQL 5.0中引入的 Create_user:确定用户是否可以执行CREATE
  27. Event:确定用户能否创建、修改和删除事件,这个权限是MySQL 5.1.6新增的
  28. Trigger:确定用户能否创建和删除触发器,这个权限是MySQL 5.1.6新增的
  29. Create_tablespace: 创建表的空间

授权命令

  1. grant all on *.* to cao@'192.168.0.%' identified by '123' with grant option;
  2. -- grant 权限 on 作用目标(用于管理哪些库或者表或者具体的文件) to 用户 identified by 密码 特殊权限;
  3. show grants for cao@'192.168.0.%';

回收权限

  1. revoke delete on wordpress.* from cao@'192.168.0.%';

数据的操作

使用工具Navicat pemium

查看版本号

  1. dos下:
  2. mysql --version
  3. 进入MySQL里面:
  4. select version();

连接

  1. mysql -u root -p
  2. 然后输入密码

连接错误次数过多时,禁止客户机连接解决办法

  1. --使用命令刷新hosts
  2. mysqladmin -uroot -p123 flush-hosts
  3. --修改配置文件连接数上限
  4. [mysqld]下面添加 max_connect_errors=1000

创建

  1. CREATE TABLE runoob_tbl

增加

  1. insert into user_code (index_id,identification,residue) values ('0','192.168.1.1','5')

删除

  1. 删除表:DROP TABLE test_tb1
  2. 删除具体行:DELETE FROM my_test where id = '1'

修改

  1. UPDATE my_test set number = '666' where number = '444'

查询

  1. select residue FROM user_code where index_id = '5'

找到employees表里入职员工时间排名倒数第三的员工所有信息

  1. select * from employees where hire_date = (
  2. select distinct hire_date from employees order by hire_date desc limit 2,1
  3. );
  4. #distinct 去重
  5. #order 排序默认升序,降序为order by hire_date desc
  6. #limit 从一个特定的偏移开始提取记录 索引从0开始,2为第三个1为提取一行

查看mysql 有什么账户列表

  1. 进入数据库 mysql -uroot -p
  2. select user.host from mysql.user;

mysqld的三层结构

1、连接层

  1. 1.提供连接协议
  2. 2.提供用户认证
  3. 3.提供连接线程

2、SQL层

  1. 1.语法的校验(sql_mod
  2. 2.语义和权限
  3. 3.解析
  4. 4.优化器根据算法算出代价,从而确认最优语句
  5. 5.执行器
  6. 6.查询缓存
  7. 7.二进制biglog的日志记录

3、存储引擎层

  1. 1.从磁盘读取数据页
  2. 2.返回给sql

mysql基本的配置模板

路径是 /etc/my.cnf

书写格式:

[标签]

xxxx=xxxx

服务器标签:[mysqld] [mysqld_safe] [server]

客户端标签:[mysql] [mysqladmin] [mysqldump] [client]

服务端

  1. [mysqld]
  2. user=mysql
  3. basedir=/usr/local/mysql
  4. datadir=/data/mysql/data
  5. socket=/tmp/mysql.sock
  6. #做主从的服务端id号(1-65535)
  7. server_id=6
  8. port=3306

客户端

  1. [mysql]
  2. socket=/tmp/mysql.sock

配置文件启动顺序

mysqld —help —verbose | grep my.cnf

  1. /etc/my.cnf > /etc/mysql/my.cnf > /usr/local/mysql/etc/my.cnf > ~/.my.cnf

数据库产品(DBMS)

RDBMS

二维表,有严格的行列结构及属性约束,支持更复杂的查询

  1. 产品:mysqloraclePG

NOSQL

没有严格的行列结构,可伸缩性、可扩展性、性能较高

  1. 产品:
  2. key valueRedisMemcache
  3. documentMongoDB
  4. 搜索(ES
  5. wideCassandra

NEWSQL R+N+分布式

  1. 产品:spanerTIDBpolarDB