MySQL初级技能基础管理知识

数据库   mysql基础  
一、连接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 表名; or desc 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