MySQL 简单操作 (笔记)

一、安装后

安装 mysql 后设置管理员 root 密码

mysqladmin -u root password 123456

修改 root 密码

mysqladmin -uroot -p password 'newpassword'

重设 root 密码

/etc/rc.d/mysqld stop
mysqld_safe --skip-grant-tables &
mysql -uroot mysql

UPDATE user SET password=PASSWORD("newpassword") WHERE User='root';
FLUSH PRIVILEGES;

二、登录数据库

连接本地 mysql

mysql -uroot -p

通过 IP 和端口连接远程mysql服务器。-h: 指定数据库服务器IP,-P: 指定要连接的端口号。

mysql -u root -p 123456 -h ip -P 3306

通过 TCP 连接管理不同端口的多个 MySQL(注意:MySQL4.1 以上版本才有此项功能)

mysql -u root --p 123456 --protocol=tcp --host=localhost --port=3307

通过 socket 套接字管理不同端口的多个 MySQL

mysql -u root -p --socket=/tmp/mysql3307.sock

退出 mysql

mysql> exit;

三、 数据库操作

显示有多少数据库

show databases;

创建与删除molyx数据库

create database molyx;
drop database molyx;

选定molyx数据库

use molyx;

当前选择的数据库

select database();

查看状态

show status;

查看进程

show processlist;

显示当前用户

select user();

显示所有用户

select user,host,password from mysql.user;

显示用户molyxuser权限

show grants for molyxuser@localhost;

查看名为molyx的数据库

mysqlshow -uroot -p molyx

四、 数据表操作

显示molyx库中的数据表

show tables from molyx;

当前数据包含的表信息

show tables;

查看表结构

describe user;

or

desc tablename;

or

show columns from tablename;

建表

create table tablename(<column1><type1>,<column2><type2>,<column3><type3>);

example:

create table MyClass(
id int(4) NOT NULL primary key auto_increment,
name char(20) NOT NULL,
sex int(4) NOT NULL default '0',
degree double(16,2)) ENGINE = MYISAM;

查询表中数据

查询所有行

select * from tablename;

查询并排序

select * from tablename order by id desc;

查询前几行数据

select * from tablename order by id limit 0,2;

指定条件查询

select * from tablename where name = 'type';

查询唯一不重复记录

select distinct name from tablename;

插入数据

insert into tablename (<column1>,<column2>,<column3>) values (type1,type2,type3);

or

insert into tablename values(1,'Tom',96.45),(2,'Joan',82.99), (2,'Wang', 96.59);

删除表中数据

delete from tablename where id=N

修改表中数据

update tablename set column='value' where id=1;

or

update tablename set column=replace(column,'oldvalue','newvalue');

example:

update article set content=concat('你好',content);
update user set pass='123456' where name='name';

更改用户名

update set user='newname' where user='oldname';

更改表名

rename table tablenameold to tablenamenew;

在表中增加字段

alter table tablename add column type default '0';

example:

alter table user add column date char(8) after pass;

在user表中修改字段名及字段数据类型

alter table tablename change column <column1> <type1> char(10);

example:

alter table user change column pass password char(10);

删除表中字段

alter table tablename grop column <column1>;

example:

alter table user drop column date;

删除用户molyxuser

use mysql;
DELETE FROM user WHERE User='molyxuser';

or

drop user 'molyxuser'@'%';

删除表

drop table tablename;

导出一个表

mysqldump -u user -p password tablename > filename

五、权限操作

先创建个molyx库,再创建个可以操作molyx库的用户molyxuser,密码为123456

create database molyx;
grant select,insert,update,delete,create,alter,create temporary tables,create view,show view,drop on molyx.* to 'molyxuser'@'localhost' identified by '123456';

or

grant all on molyx.* to 'molyxuser’@localhost identified by '123456';

收回molyxuser针对molyx库的所有权限

revoke all on molyx.* from 'molyxuser'@localhost identified by '123456';

创建一个针对molyx库具有所有权限,可从任意IP登录的帐号molyxuser

grant all on molyx.* to 'molyxuser'@'%' identified by '123456';

六、备份与还原

备份molyx到文件molyx.sql

mysqldump -uroot -p  molyx > /your/path/molyx.sql

备份全部数据

mysqldump -uroot -p --all-databases > /your/path/backup.sql

备份molyx并压缩

mysqldump -u root -p  molyx | gzip > /your/path/molyx.sql.gz

将molyx.sql导入到数据库

mysqlimport -uroot -p < /your/path/molyx.sql

将压缩文件molyx.sql.gz中数据恢复到molyx库

gzip < molyx.sql.gz | mysql -uroot -p --database molyx

将文本数据导入数据库:

use test;
load data local infile 'filename' into table tablename;

检查所有的.myi文件

myisamchk /your/path/mysql/*.MYI

修复所有的.myi

myisamchk -r /your/path/mysql/*.MYI

七、其他

#mysql 显示和使用的mysql数据库。前面已经简单的提过用法;比如登录等
#mysqladmin 用来创建和维护mysql数据库的命令
#isamchk 是用来修复、检查和优化.ism后缀的数据库文件
#mysqldump 是用于备份数据库
#myisamchk 用来修复.myi后缀的数据库文件
1. 字段类型

安装升级

emerge --config =dev-db/mysql-5.1.53
mysql_upgrade tool
2. mysqldump 命令的使用

备份和导出数据库

mysqldump -h database_ip -u Username -p --opt databasename > backup-file.sql

只导出数据库表结构

mysqldump -h database_ip -d -u Username -p databasename >database_structure.sql

只导出数据库中的某个表

mysqldump --opt --add-drop-table -u Username -p databasename tablename > dump.sql

如果不想手工输入密码 请使用–password 参数

mysqldump -h database_ip -u Username --password=123456 --opt databasename > backup-file.sql
mysqldump -h database_ip -d -u Username --password=123456 databasename >database_structure.sql
3. mysql 命令使用

将查询结果保存到文件

select title from book into outfile '/tmp/outfile.txt';

查找表中多余的重复记录,重复记录是根据某个字段(peopleId)来判断

select * from people where peopleId in (select peopleId from people group by
peopleId having count(peopleId) > 1);

查询表中不重复记录(排除重复记录)

select * from phome_ecms_wma where title in (select distinct title from phome_ecms_wma);

删除表中重复记录,重复记录是根据某个字段(title)来判断

select *,count(distinct title) INTO OUTFILE '/tmp/table.bak' from phome_ecms_wma group by title;
delete from phome_ecms_wma;
LOAD DATA INFILE '/tmp/table.bak' REPLACE INTO TABLE phome_ecms_wma character set utf8;

查询数据库当前编码

show variables like 'character_set%';

修改表字段类型

alter table table_name change last_action last_action datetime NOT NULL default '0000-00-00 00:00:00';

给表添加一个新字段

ALTER TABLE host ADD ks_mac VARCHAR(100);

从表中删除一个字段

ALTER TABLE table_name DROP field_name;

重命名表

alter table t1 rename t2;

给字段加索引

alter table tablename add index 索引名 (字段名1[,字段名2 …]);
alter table tablename add index emp_name (name);

加主关键字的索引

alter table tablename add primary key(id);

加唯一限制条件的索引

alter table tablename add unique emp_name2(cardnumber);

删除某个索引

alter table tablename drop index emp_name;

远程访问mysql 设置

GRANT ALL PRIVILEGES ON database_test.* to root@192.168.1.9 IDENTIFIED BY '123456';
FLUSH PRIVILEGES;

往表中加入记录

insert into mytable values ('test','m');

用文本方式将数据装入数据库表中(例如 d:\mysql.txt)

load data local infile 'd:/mysql.txt' into table mytable;

导入.sql文件命令(例如 d:\mysql.sql)

use database;
source d:/mysql.sql;

若要给此用户赋予他在相应对象上的权限的管理能力,可在grant后面添加with grant option选项。而对于用插入User表添加的用户,Password字段应用password函数进行更新加密,以防不轨之人窃看密码。对于那些已经不用的用户应给予清除,权限过界的用户应及时回收权限,回收权限可以通过更新User表相应字段,也可以使用revoke操作。以下是常用权限的解释:

全局管理权限

数据库/数据表/数据列权限

特别的权限