一、连接mysql
格式
mysql -h主机地址 -u用户名 -p用户密码
连接到本机上的mysql,默认安装好没有密码
mysql -uroot -p
连接到远程主机上的mysql,假设远程主机的IP为:192.168.1.66,用户 名为root,密码为123456
mysql -h192.168.1.66 -uroot -p123456
注:u与root可以不用加空格,其它也一样退出mysql命令:exit(回车)
二、修改密码
格式
mysqladmin -u用户名 -p旧密码 password 新密码
给root设置密码123456
mysqladmin -uroot password 123456
注:因为开始时root没有密码,所以-p旧密码一项就可以省略了再将root的密码改为654321
mysqladmin -uroot -pab12 password 654321
另一种方法
mysql -u root -p
mysql>use mysql
mysql>update user set Password=Password('654321') where User='root';
mysql>flush privileges;如果root已经设置过密码,采用如下方法
mysqladmin -u root password oldpass "newpass"
- 在丢失root密码的时候,可以这样
service mysqld stop
mysqld_safe --skip-grant-tables&
mysql -u root mysql
mysql> UPDATE user SET password=PASSWORD("new password") WHERE user='root';
mysql> FLUSH PRIVILEGES;
三、增加新用户。
格式
grant select on 数据库.* to 用户名@登录主机 identified by "密码"
增加一个用户test 密码为123456,让他可以在任何主机上登录, 并对所有数据库有 查询、插入、修改、删除的权限。
grant select,insert,update,delete on *.* to test1@"%" Identified by "123456";
增加一个用户test2密码为123654,让其只可以在localhost上登录, 并可以对数据库 mydb进行查询、插入、修改、删除的操作(localhost指本地主机)
grant select,insert,update,delete on mydb.* to test2@localhost identified by "123654";
grant 授权后必须执行以下命令刷新权限才会生效
flush privileges;
- 删除对test1的权限
REVOKE ALL PRIVILEGES ON *.* FROM test1@"%";
use mysql;
DELETE FROM user WHERE User="test1" and Host="%";
FLUSH PRIVILEGES;
四、操作技巧
如果你打命令时,回车后发现忘记加分号,你无须重打一遍命令,只要打个分号回车就可以了。也就是说你可以把一个完整的命令分成几行来打,完后用分号作结束标志就OK。
你可以使用光标上下键调出以前的命令,但是有些很旧的版本不支持
五、常用命令
显示数据库列表
show databases;
显示库中的数据表
use mysql;
show tables;
显示数据表的结构
describe 表名;
ordesc tablename;
建库
create database 库名;
建表
use 库名;
create table 表名(字段设定列表);
删库和删表
drop database 库名;
drop table 表名;
将表中记录清空
delete from 表名;
显示表中的记录
select * from 表名;
重命名表
ALTER TABLE teacher RENAME tcer;
增加一个新TIMESTAMP列,名为datetime
ALTER TABLE tcer ADD datetime TIMESTAMP;
删除列datetime
ALTER TABLE tcer DROP COLUMN datetime;
删除记录
DELETE FROM tcer WHERE id=1;
改变某几行
UPDATE tcer SET user=leoiceo,password=password;
update 表名 set 字段名 where 条件
六、一个建库和建表以及插入数据的实例
drop database if exists school; # 如果存在SCHOOL则删除
create database school; # 建立库SCHOOL
use school; # 打开库SCHOOL
create table teacher # 建立表TEACHER
(
id int(3) auto_increment not null primary key,
name char(10) not null,
address varchar(50) default '广州',
year date
); # 建表结束
# 以下为插入字段
insert into teacher values('',leoiceo','广州市第一中学','2015-2-10');
insert into teacher values('','jack','广州市第一中学','2015-2-10');
注:在建表中
(1) 将ID设为长度为3的数字字段:int(3),并让它每个记录自动加一: auto_increment,并不能为空:not null,而且让它成为主字段primary key
(2) 将NAME设为长度为10的字符字段
(3) 将ADDRESS设为长度50的字符字段,而且缺省值为广州。varchar和char有什么区别呢,只有等以后的文章再说了。
(4) 将YEAR设为日期字段。
如果你在mysql提示符键入上面的命令也可以,但不方便调试。 你可以将以上命令原样写入一个文本文件中假设为school.sql
mysql -uroot -p密码 < ./school.sql
如果成功,空出一行无任何显示;如有错误,会有提示。(以上命令已经调试,你只要将#的注释去掉即可使用)。
七、导入导出SQL
- 导入SQL
mysql -uroot -p
mysql>create database school;
mysql>use school;
mysql>source school.sql;
- 导出数据库
>
mysqldump --databases -R dbname > dbname.sql
- 导入数据库
<
mysql -uroot -p dbname < dbname.sql