Mysql資料庫的許可權、索引基本操作

來源:互聯網
上載者:User

標籤:啟動mysql   safe   rac   index   upd   允許   修改   忽略   pass   

資料庫的關閉方法:

1、優雅的關閉資料庫的方法:
mysqladmin -uroot -p123456 shutdown

2、指令碼關閉:
/etc/init.d/mysqld stop

3、使用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 stop

2、使用--skip-grant-tables啟動mysql,忽略授權登入驗證

[[email protected] ~]# mysqld_safe --skip-grant-tables --user=mysql &

空密碼登入:
[[email protected] ~]# mysql

修改密碼:
mysql>update mysql.user set password=password("123456") where user=‘root‘ and host=‘localhost‘;

重新整理許可權:
mysql>flush privileges;

關閉mysql
[[email protected] ~]# mysqladmin -uroot -p123456 shutdown

重新啟動mysql
[[email protected] ~]# /etc/init.d/mysqld start

[[email protected] ~]# mysql -uroot -p123456

SQL Structured Query Language SQL結構化查詢語言 (SQL)


資料庫簡單操作:

建立資料庫時指定字元集:
mysql> create database template_gbk default character set gbk

mysql> show create database template_gbk


mysql> show databases;


mysql> select database(); 查看當前串連的資料庫

mysql> select now(); 查看目前時間

mysql> select user(); 查看目前使用者

mysql> select version(); 查看目前的版本


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 [email protected]‘localhost‘; 查看許可權

1 SELECT
2 INSERT
3 UPDATE
4 DELETE
5 CREATE
6 DROP
7 REFERENCES
8 INDEX
9 ALTER
10 CREATE TEMPORARY TABLES
11 LOCK TABLES
12 EXECUTE
13 CREATE VIEW
14 SHOW VIEW
15 CREATE ROUTINE
16 ALTER ROUTINE
17 EVENT
18 TRIGGER

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.00 sec)


建表:
create table <表名>(
<欄位名 1><類型 1>,
...
<欄位名 n><類型 n>);

建表語句:

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

);

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=utf8
1 row in set (0.00 sec)


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 null AUTO_INCREMENT, #自增
name char(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 int primary 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

 

Mysql資料庫的許可權、索引基本操作

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.