mysql 索引权限_Mysql数据库的权限、索引基本操作

数据库的关闭方法:1、优雅的关闭数据库的方法:

mysqladmin-uroot -p123456 shutdown2、脚本关闭:/etc/init.d/mysqld stop3、使用kill信号的方法(最好不用)kill -USR2 'cat path/pid'history不记录历史命令

HISTCONTROL=ignorespace (敲命令的时候加一个空格,可以不记录)

善于使用mysql的help

Mysql设置密码的方法:

mysqladmin-uroot password '123456'mysqladmin-uroot password '123456' -S /data/3306/mysql.sock(多实例的密码设置)

Mysql修改密码:

mysqladmin-uroot -p123456 password 'template'mysqladmin-uroot -p123456 password 'template' -S /data/3306/mysql.sock(多实例修改密码)

使用sql语句修改密码:

mysql>UPDATE mysql.user SET password=PASSWORD("123456") WHERE user='root';

set方法:

set password=password('123456')

Mysql密码忘记找回步骤:1、先停止数据库/etc/init.d/mysqld stop2、使用--skip-grant-tables启动mysql,忽略授权登录验证

[root@localhost~]# mysqld_safe --skip-grant-tables --user=mysql &空密码登录:

[root@localhost~]# mysql

修改密码:

mysql>update mysql.user set password=password("123456") where user='root' and host='localhost';

刷新权限:

mysql>flush privileges;

关闭mysql

[root@localhost~]# mysqladmin -uroot -p123456 shutdown

重新启动mysql

[root@localhost~]# /etc/init.d/mysqld start

[root@localhost~]# mysql -uroot -p123456

SQL Structured Query Language SQL结构化查询语言

数据库简单操作:

创建数据库时指定字符集:

mysql>create database template_gbk default character set gbk

mysql>show create database template_gbk

mysql>show databases;

mysql> selectdatabase(); 查看当前连接的数据库

mysql> selectnow(); 查看当前时间

mysql> selectuser(); 查看当前用户

mysql> selectversion(); 查看当前版本

mysql>show tables;查看表

删除Mysql系统多余账号

drop user'template'@'localhost'; 删除用户

如果drop删除不了(一般是特殊字符或大写)可以使用下面的方式删除

mysql> delete from mysql.user where user='root' and host='localhost';

mysql>flush privileges;

创建Mysql用户及赋予用户授权

mysql> grant all on test.* to 'template'@'localhost' identified by '123456';

mysql>flush privileges;

mysql> show grants for 'template'@'localhost'; 查看权限

create 和grant 配合方法

mysql> create user 'template'@'localhost' identefied by '123456';

mysql> grant all on dbname.* to 'username'@'localhost'; #赋予权限

#授权局域网内主机远程连接数据库%匹配法

mysql> grant all on *.* to 'someuser'@'%' identified by '123456';

子网掩码匹配法

mysql> grant all on *.* to 'someuser'@'10.0.0.0/255.255.255.0' identified by '123456';

mysql-uroot -p123456 -h 10.0.0.7 -P 3306远程连接

revoke insert on test.* from 'template'@'localhost'; 收回权限

mysql> show grants for oldboy@'localhost'; 查看权限1SELECT2INSERT3UPDATE4DELETE5CREATE6DROP7REFERENCES8INDEX9ALTER10CREATE TEMPORARY TABLES11LOCK TABLES12EXECUTE13CREATE VIEW14SHOW VIEW15CREATE ROUTINE16ALTER ROUTINE17EVENT18TRIGGER

mysql> select *from mysql.user;

insert(增),delete(删),update(改),select(查)

生成数据库表后,要收回create 和drop授权

mysql>create database template; 创建数据库

mysql>show create database template;查看建库信息+----------+-------------------------------------------------------------------+

| Database | Create Database |

+----------+-------------------------------------------------------------------+

| template | CREATE DATABASE `template` /*!40100 DEFAULT CHARACTER SET utf8*/ |

+----------+-------------------------------------------------------------------+

1 row in set (0.00sec)

建表:

create table(,

...);

建表语句:

create table student(id int(4) not null,

namechar(20) not null,

age tinyint(2) not null default '0',

dept varchar(16) default null);

mysql>show create table student\G*************************** 1. row ***************************Table: student

Create Table: CREATE TABLE `student` (

`id` int(4) NOT NULL,

`name`char(20) NOT NULL,

`age` tinyint(2) NOT NULL DEFAULT '0',

`dept` varchar(16) DEFAULT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf81 row in set (0.00sec)

mysql>desc student; 查看表结构+-------+-------------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+-------+-------------+------+-----+---------+-------+

| id | int(4) | NO | | NULL | |

| name | char(20) | NO | | NULL | |

| age | tinyint(2) | NO | | 0 | |

| dept | varchar(16) | YES | | NULL | |

+-------+-------------+------+-----+---------+-------+mysql>show columns from student; 查看表结构

索引就像是书的目录,如果在字段上建立了索引,那么以索引列为查询条件时可以加快查询数据的速度。

创建主键索引

查询数据库,按主键索引是最快的,每个表只能有一个主键列,但是可以有多个普通索引列。主键列要求列的所有内容必须唯一,而索引列不要求内容必须唯一

mysql>create table student(id int(4) not nullAUTO_INCREMENT, #自增

namechar(20) not null,

age tinyint(2) not null default '0',

dept varchar(16) default null,

primary key(id),

KEY index_name(name) #创建索引

);

建表后通过alter命令增加主键索引(不建议这样干)

mysql> alter table student change id id intprimary key auto_increment;

mysql>alter table student drop index index_name; 删除索引

mysql>drop index index_dept on student; 删除索引

mysql>alter table student add index index_name(name); 添加普通索引

mysql> create index index_dept on student(dept(8)); 指定前n个字符创建索引

mysql>show index from student\G 查看索引

mysql>create index idn_name_dept on student(name,dept); 创建联合索引,允许列上有自己的索引

mysql> create index ind_name_dept on student(name(8),dept(10)); 根据多个列前n个字符创建联合索引

mysql>create unique index uni_ind_name on student(name); 创建唯一索引

问题1:既然索引可以加快查询速度,那么就给所有的列建立索引吧?

解答:因为索引不但占用空间,更新数据库时还需要维护索引数据,因此,索引试一把双刃剑,并不是越多越好,例如:数十到几百行的小表上无需建立索引,写频繁,读少的业务要少建立索引

问题2:到底在哪些列上创建索引呢?

解答:select user,host from mysql.user where host=...,索引一定要创建在where后的条件列,而不是select后的选择数据的列,另外,要尽量选择在唯一值多的大表上建立索引。

基本条件:1、要在表的列上创建索引2、索引会加快查询速度,但是会影响更新的速度,因为要维护索引3、索引不是越多越好,要在频繁查询的where后的条件列上创建索引4、小表或唯一值极少的列上不建索引,要在大表以及不同的内容多的列上创建索引

help alter table

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值