mysql的基础操作命令

命令的总结:ss、killall、kill、pkill

关闭数据库方法:

mysqladmin -uroot -pPassword shutdown

/etc/inti.d/mysqld stop

kill -USR2 $(cat path/pid)

更改mysql数据登录提示符的方法:

1.mysql> prompt \[email protected] \r:\m\s->

PROMPT set to ‘\[email protected] \r:\m\s->‘

[email protected] 10:41:22->

2.vim my.cnf

[mysql]

prompt=\\[email protected] \\r:\\m:\\s->

使用mysql的help,太厉害了吧。。。

设置root密码:

mysqladmin -uroot password ‘setpassword‘

更改密码:

mysqladmin -uroot -p‘oldpassword‘ password ‘newpassword‘ -S /data/3306/mysql.sock

适合忘记root密码的密码更改:--skip-grant-tables

mysqld_safe --defaults-file=/data/3306/my.cnf --skip-grant-tables &

mysqld_safe --skip-grant-tables --user=mysql &

update mysql.user set password=password(‘newpassword‘) where user=‘root‘ and host=‘localhost‘;

flush privileges;

没有root密码:

mysql> set password=password(‘setpassword‘);

mysql> flush privileges;

SQL语句的使用:

DQL(数据查询语言)、DML(数据操纵语言)、TPL(事务处理语言)、DCL(数据控制语言)、DDL(数据定义语言)、CCL(指针控制语言)

DQL: select

DML: insert , update , delete

TPL: begin , transaction , commit , rollback

DCL: grant , revoke

DDL: create , drop

CCL: declare cursor, fetch into, update where current

select database();

select user();

drop删除不了的时候使用delete删除,一般指用户。

创建用户并授权:

grant all privileges on dbname.* to [email protected] identified by ‘password‘;

flush privileges;

查看用户权限:

show grant for [email protected];

收回用户权限:

revoke insert on dbname.* from [email protected];

生产环境的用户授权:

1、blog、CMS:

安装期间需要select, insert, update, delete, create, drop。安装完成后收回create和drop。

常规情况下:select, insert update, delete.

2、bbs,discuz:

都需要select, insert, update, delete, create, drop

对于主从的授权:

主库(写为主读为辅):

本机:lnmp,lamp

grant all privileges on blog.* to ‘blog‘@‘localhost‘ identified by ‘blog‘;

应用服务器和数据库服务器不在一个主机上的授权:

grant all privileges on ‘blog‘.* to ‘blog‘@‘hostname‘ identified by ‘blog‘;

严格的授权:重视安全,忽略方便:

grant select, insert, update, delete on ‘blog‘.* to ‘blog‘@‘hostname‘ identified by ‘blog‘;

从库(只读):

grant select on ‘blog‘.* to ‘blog‘@‘hostname‘ identified by ‘blog‘;

主从高级授权策略:

第一种:

写库:blog   password:password   port:3306    hostname:10.0.0.x

读库:blog   password: password   port: 3306    hostname: 10.0.0.x

第二种:

写库:blog_w password: password   port: 3306    hostname: 10.0.0.x

读库:blog_r password: password   port: 3306    hostname: 10.0.0.x

授权的具体命令:

主库:

grant select, insert, update, delete on ‘blog‘.* to ‘blog‘@‘10.0.0.x‘ identified by ‘blog‘;

从库:

grant select on ‘blog‘.* to ‘blog‘@‘10.0.0.x‘ identified by ‘blog‘;

从库除了做select外,还可以加read-only参数,严格控制web用户写从库。

主从库的mysql库和表是同步的,无法针对同一个用户授权不同的权限。因为,主库授权后会自动同步到从库上,导致从库的授权只读失败。

resolve funciton:

1.取消mysql库的同步。

2.授权主库权限后,从库执行收回增删改。

3.不在授权上控制增删改,而是用read-only参数,控制普通用户更新从库,注意,read-only参数对超级用户无效。

查看mysql用户授权:

show grant for ‘username‘@‘hostname‘;

数据表的操作:

create table tname(

field type,

field type,

field type);

为表的字段创建索引:

create table tname(

field type auto_increment,

field type,

field type

primary key(id),

key index_name(name)

);

删除主键:

alter table tname drop primary key;

增加主键:

alter table tname change id id int primary key auto_increment;

删除索引:

alter table student drop index index_name;

在某列上添加索引:

alter table tname add index index_name(name);

对字段的前n个字符创建普通索引:

create index index_name on tname(col_name(8));

对表的多个字段创建联合索引:

create index index_name on tname(col_name1, col_name2);

show index form tname\G

删除索引:

drop index index_nanme on tname;

对表的多个字段的前n个字符列创建联合索引:

create index index_name on tname(col_name1(8), col_name2(10));

按条件列查询时,联合索引是有前缀生效特性的。

index(a,b,c)仅a, ab, abc三个查询条件列表可以走索引。b, bc, ac, c等无法走索引。

创建唯一非主键索引:

create unique index index_name on tname(col_name);

小表无需建立索引,写频繁,读少的业务要少建立索引。

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

创建主键索引:

alter table tname change id id int primary key auto_increment;

删除主键索引:

alter table tname drop primary key;

创建普通索引:

alter table tname add index index_name(col_name(8));

create index index on tname(col_name(8));

create index index_name on tname(col_name1, col_name2);

删除普通索引:

alter table tname drop index index_name;

alter和create的帮助相关

help alter table;

插入数据:

insert into tname (col1, col2...) values (value1, value2...);

查询select语句的执行计划:

explain select * from tname;

help explain

手册需要掌握: 5, 6, 7, 8, 10, 11, 13, 14, 15

查看mysql二进制日志使用mysqlbinlog命令查看二进制日志文件。二进制日志文件只记录更改,不记录查询。

# mysqlbinlog mysql-bin.log

使用二进制日志恢复数据的思路及方法:

首先使用数据库的全备份,恢复到全备份的那个时候的数据,然后再使用二进制日志恢复从全备份到数据出错的时间段的数据。命令如下:

mysql -uroot -proot dbname < /path/to/dbname.sql

mysqlbinlog mysql-bin.000001 > mysql-bin.sql

在mysql.sql文件中找到相关出错时间的出错语句,删除之。在恢复到dbname中即可

mysql -uroot -proot dbnmae < /path/to/mysql-bin.sql

恢复完成。

防止mysql的误操作:使用mysql -U的命令登录。

删除表数据:

delete from tname;表中的数据一条一条删除。

truncate table tname;先drop掉整个表,然后重新创建该表。(效率高)

增删改表的列(field):

alter table tname add/change.......

更改表名:

rename table old_tname to new_tname;

sql语句重点:建库、建表、索引、列

解决mysql乱码的5种方法:

1.登录mysql后执行:set names utf8;

2.在sql文件中指定:set names utf8; 登录mysql执行:source dbname.sql

3.在sql文件中指定:set names utf8; 使用mysql导入:mysql -uroot -proot dbname < dbname.sql

mysql -uroot -proot -e "set names utf8; select * from dbname.tname;"

4.通过mysql导入指定字符集:mysql -uroot -proot --default-character-set=utf8 dbname < dbname.sql

5.修改配置文件:vim my.cnf

[client]

default-character-set=utf8

[mysqld]

default-character-set=utf8 5.1版本

character-set-server=utf8 5.5版本

linux,客户端,服务端,库,表,程序,使用同一字符集。

show variables;

show global status;

set global key_buffer_size=

show vairables like ‘key_buffer%‘;

my.cnf 加 key_buffer_size=

mysql -e

mysqldump, mysqlbinlog, mysql, mysqladmin

修改mysql数据库表的字符集:

alter database character set *

alter table tname character set *

对已有的数据表不能修改,只能修改新创建的。

对已有的数据表的字符集修改,需要导出数据,修改字符集后重新导入即可:

alter database dbname character set utf8;

1.导出表结构:

mysqldump -uroot -p --default-character-set=gbk -d dbname > dbname.alltable.sql

--default-character-set=gbk表示用gbk连接,-d只导出表结构。

2.编辑dbname.sql将原字符集改成现在的字符集

3.确保数据库不再更新,导出所有数据

mysqldump -uroot -p --quick --no-create-info --extended-insert --default-character-set=utf8 dbname > alldata.sql

--quick:用于转储大的表,强制mysqldump从服务器一次一行的检索数据而不是检索所有行,并输出前cache到内存中。

--no-create-info:不创建create table语句。

--extended-insert:使用包括几个values列表的多行insert语法,这样文件更小,IO也小,导入数据时会更快。

--default-character-set=utf8:按照原有字符集导出数据,这样导出的文件中,所有中文到时可见的,不会保存成乱码。

4.编辑alldata.sql将set names utf8改成gbk

5.建库

create database dbname default charset gbk;

6.创建表,执行dbname.alltable.sql

mysql -uroot -proot dbname < dbname.alltable.sql

7.导入数据:

mysql -uroot -proot dbname < alldata.sql

使用mysqldump备份所有的数据库的命令:

mysql -uroot -proot -e "show databases;" | grep -Evi "database|infor|perfor" | sed -r ‘s#^([a-z].*$)#mysqldump -uroot -proot -B \1|gzip >/opt/\1.sql.gz#g‘ | bash

时间: 2024-10-28 09:57:57

mysql的基础操作命令的相关文章

mysql 常用基础操作命令

1  连接Mysql 格式: mysql -h主机地址 -u用户名 -p用户密码 1.连接到本机上的MYSQL.首先打开DOS窗口,然后进入目录mysql\bin,再键入命令mysql -u root -p,回车后提示你输密码.注意用户名前可以有空格也可以没有空格,但是密码前必须没有空格,否则让你重新输入密码. 如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即可进入到MYSQL中了,MYSQL的提示符是: mysql> 2.连接到远程主机上的MYSQL.假设远程主机的IP为:1

MySQL的基础命令&lt;一&gt;

MySQL常用基础操作命令(5.5) 一.MySQL的启动与关闭 1.MySQL的启动与停止的实质 启动的实质:mysqld_salf --default-file=/data/3306/my.cnf 停止的实质:mysqladmin uroot -p"密码" -s /date/3306/mysql.sock shutdown 二.MySQL的密码有关问题 1.单实例MySQL的启动 [[email protected] mysql-5.1.72]# cp support-files/

MySQL数据库基础知识

day02 MySQL数据库基础知识 一.基础知识概述: 基础决定你这门课程的学习成败!只有学习好这些基础知识以后,你才能真正的运用自如.才能够对数据库有更深入的了解,道路才会越走越远. 二.基础知识: 1.数据库(database):数据库就好比是一个物理的文档柜,一个容器,把我们整理好的数据表等等归纳起来. 创建数据库命令:        create database 数据库名; 2.查看数据库         show databases; 3.打开指定的数据库         use 

MYSQL数据库基础

MySQL数据库基础 本文的所有操作是基于CMD命令行操作方式,且可适当参考<打通MySQL的操作权限>中的内容,该文算是针对前期的环境配置问题提供了一个较为全面的解决方案,与本文是一个相(yao)辅(xiang)相(hu)成(ying)的关系. 一.连接相关 1. 启动MySQL服务器:net start mysql 2. 连接MySQL数据库:mysql -uroot -h127.0.0.1 -ppassword 3. 断开MySQL数据库:连接到MySQL服务器后,可通过在MySQL提示

mysql 触发器基础:

触发器,顾名思义,基于某具体的DML语句的触发或执行,来执行一个动作.mysql触发器在6个不同的集成点进行定义:before insert:插入之前执行触发器 after insert:插入之后执行触发器before update:插入之前执行触发器after update:插入之后执行触发器before delete:删除之前执行触发器 after delete:删除之后执行触发器 每个点只能定义一个触发器,触发器只可以应用在for each row上,没有每个语句级的功能.也没有代替触发器

Mysql索引基础

Mysql索引基础 基本概念: 索引是一种特殊的数据库结构,可以用来快速查询数据库表中的特定记录.索引是提高数据库性能的重要方式.索引创建在表上,是对数据库表中一列或多列的值进行排序的一种结构.可以提高查询速度.MySQL中,所有的数据类型都可以被索引. 索引的优点: 增加查询速度 利用索引的唯一性来控制记录的唯一性 降低查询中分组和排序的时间 可以加速表与表之间的连接 索引的缺点: 存储索引占用磁盘空间 执行数据修改操作(INSERT.UPDATE.DELETE)产生索引维护 每次修改表结构都

mysql的基础操作指令整理|环境redhat6

1.安装 yum-y install mysql mysql-server service mysqld start|stop|restart        ##启动|停止|重启 chkconfig mysqld on|off                  ##开机启动|关闭 此时输入:mysql就能启动进入(记得是start状态) 2.改密 mysqladmin –uroot password             ##创建密码 mysqladmin–uroot –pxxoo passw

[干货分享]git的简单理解及基础操作命令

前端小白一枚,最近开始使用git,于是花了2天看了廖雪峰的git教程(偏实践,对于学习git的基础操作很有帮助哦),也在看<git版本控制>这本书(偏理论,内容完善,很不错),针对所学内容建了git仓库测试,且写了不少git操作命令的笔记,做个分享,有错误的地方各位大大也给提出,好做修改~ Git是一款免费.开源的.用Linux内核开发的分布式版本控制系统. git和svn有什么区别呢? git采用分布式版本库管理,而svn采用集中式版本库管理. 集中式版本库管理需要有一台存放版本库的服务器,

PHP移动互联网开发笔记(6)——MySQL数据库基础回顾

最近看了一些架构方面的资料,但是发现基础知识都不怎么牢固,接下来的一段时间,我会定期总结基础知识. 一.数据类型 1.整型 数据类型 存储空间 说明 取值范围 TINYINT 1字节 非常小的整数 带符号值:-128~127 无符号值:0~255 SMALLINT 2字节 较小的整数 带符号值:-32768~32767 无符号值:0~65535 MEDIUMNT 3字节 中等大小的整数 带符号值:-8388608~8388607 无符号值:0~16777215 INT 4字节 标准整数 带符号值