zoukankan      html  css  js  c++  java
  • 四、linux-mysql 下MySQL的管理(一)

      1.mysql启动的实质:

          在单实例中,/etc/init.d/mysql start 是一个shell脚本,调用mysqld_safe脚本,最后调用mysqld服务启动mysql。

      2. 关闭mysql有两种方式,mysqladmin  -uroot -poldboy124 shutdown 或者    /etc/init.d/mysql  stop

      3.  对于mysql要多用:help,就像是linux 中的man,help一样。

      4.修改密码两种方式:

         1)mysqladmin   -uroot -poldboy124  password '123'---必须有原密码

         2)update mysql.user  set  password=password(456)  where user='root'  and host='localhost'

      5.密码丢失:

          1)/etc/init.d/mysql stop

          2)  mysqld_safe --skip-grant-tables --user=mysql & (跳过授权页面进行mysql服务开启,即登陆不需要密码)

         3)mysql进行登陆

         4)pdate mysql.user  set  password=password(456)  where user='root'  and host='localhost'

         5)lush  privileges

         6)quit

         7)  mysqladmin -uroot -p124 shutdown

         8)正常方式重新登陆

     6.什么是sql?

          sql就是结构化查询语言,对关系型数据库中的数据进行定义和操作的语言方法,是大多数关系数据库管理的工业标准。用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。

          sql有6个部分:

           dql 查询,从表中获取数据;

           dml:数据操作语言,就是添加、修改、删除表中的数据;(开发写好,运维执行)

           tpl:dml的数据能更新到数据库里面或者失效,例如:commit,rollback,在oracle默认dml是不提交数据库的,必须commit,但是在mysql是默认提交的,可以手工打开或者关闭;

           dcl:数据控制语言,grant,revoke;  (运维常用)

           ddl:数据定义语言,create,drop,alter  ;(运维常用)

           ccl:指针控制语言,declare等

    7.mysql常见管理应用

         7.1字符集 

       1)创建数据库:create databases 数据库名

    mysql> create database oldboy;
    Query OK, 1 row affected (0.13 sec)
    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mysql              |
    | oldboy             |
    | performance_schema |
    | test               |
    | wiki               |
    +--------------------+
    6 rows in set (0.00 sec)
    mysql> show create database oldboyG
    *************************** 1. row ***************************
           Database: oldboy
    Create Database: CREATE DATABASE `oldboy` /*!40100 DEFAULT CHARACTER SET latin1 */---表示默认字符集是拉丁1
    1 row in set (0.06 sec)
      2)之前讲过三种安装mysql的方式,其实每种方式都需要./configure 进行mysql数据库的编译。如果我们在编译安装的时候,没有指定特定的编译安装,那么默认就是拉丁安装,如果指定了比如utf8,那么以后创建对应的数据库就不需要指定字符集了,默认就是utf8。当然,这里有个前提是,数据库在编译的时候要支持创库的字符集,一般情况下默认不配置这个,也是包含了比如utf8,gbk,拉丁等库字符集了。
     
      3)创建一个名为oldboy_gbk字符集数据库;创建一个名为oldboy_utf字符集的数据库;
          mysql> create database oldboy_gbk DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;  ---字符集就是一套编码,字符校对就是比较编码的方式,按照字符集进行读写。
          mysql> create database oldboy_utf8 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
     
      4)企业如何创建数据库呢?
             是根据开发的程序确定的,编译时指定数据库,然后建库的时候默认创建即可,create database oldboy
     
       7.2 建库命令
           1)展示数据库:show  database like %old%
           2)   建立数据库:use  oldbou_gbk
           3) 查询时间:select now();
           4) 删除用户:drop user 'oldboy'@'localhost'
           5)    grant 命令在创建用户,授权:
                   grant all on  db1.* to 'user'@'localhost'  identified by  'xxx' 
                   show grants for oldgirl@localhost;
            6)允许其他机器机器访问:              
                mysql> create user  test @'192.168.0.%'  identified by 'test';
               [root@djw1 ~]# mysql -utest -ptest -h 192.168.0.102
           7)all privileges都有哪些权限?(企业的安全50%来自内部,运维要控制最小原则)
                REVOKE INSERT ON test.* FROM 'oldboy'@'localhost';
               show grants for oldboy@localhost;
              GRANT SELECT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER ON `test`.* TO 'oldboy'@'localhost'
       7.3 表和表语句
         1) 建表语句:
    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
    );
    查看:
      | student | 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=latin1 |
    默认情况下,数据库是什么字符集,那么表就是什么字符集,引擎是InnoDB。mysql5.5和5.1的默认引擎是不一样的,mysql5.1及以前默认引擎为MyISAM,现在5.5的引擎是InnoDB.
         2)查看表结构:
           

         3)为表的字段创建索引

           索引就像书的目录一样,如果在字段上建立索引,那么以索引列为查询条件时,就可以加快速度,很重要。

           主键索引查询是最快的。无论建立什么索引,最终都是在表对应的列上创建,可以是单列或者多列上创建索引。

           索引分为:主键索引和普通索引,普通索引为唯一索引和不唯一索引。(所谓唯一索引,就是因为有了主键,但是还想区分此列为唯一)

          创建索引:

           drop table student;

      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)
    );

      展示索引:show index from studentG;

      创建联合索引:create index ind_name_dept on student(name,dept);

        index(a,b,c)仅a,ab,abc三个查询条件列可以走索引,b,bc,ac,c等无法使用索引,这叫做联合索引是有前缀生效特性的。

      创建唯一索引:

        drop  index index_name on student;
       create unique  index uni_ind_name on student(name);

       

          7.4 索引可以加快查询速度,那么就给所有的列建立索引?

               因为索引不但占用系统空间,更新数据库时还需要维护索引重建,因此,索引是一把双刃剑,并不是越多越好,所以数十到百行的小表无需索引,写频繁读少少建立索引。索引 一定要建立在where后的条件上的列,且是唯一值多的大表上创建。

  • 相关阅读:
    [每日一题] OCP1z0-047 :2013-07-29 视图――别名
    Java动态规划实现最短路径问题
    Java动态规划实现最短路径问题
    Java实现堆排序问题(变治法)
    Java实现堆排序问题(变治法)
    Java实现堆排序问题(变治法)
    Java实现堆排序问题(变治法)
    Java实现堆排序问题(变治法)
    Java实现8枚硬币问题(减治法)
    Java实现8枚硬币问题(减治法)
  • 原文地址:https://www.cnblogs.com/dangjingwei/p/11404376.html
Copyright © 2011-2022 走看看