mysql复习小结一

一点扩展:

2008116MySQLSun公司收购。MySQL的创始人Michael “Monty” Widenius也弄出MariaDBMariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品)来对抗MySQLOracle为了消灭竞争对手,一般都采取收购的策略。mysqlsun后来也被oracle收购了。如今,mysql分为社区版和企业版,社区版是不稳定的版本,不由mysql提供服务保障,企业版稳定,功能强大,但是需要花钱购买。

由于mysql被收购后,版本更新速度变慢,核心开发团队封闭等特点,使得各个大公司,都开发了自己定制的MySQL版本,包括Yahoo!/Facebook/Google/阿里巴巴等。

基本知识

mysql存储引擎(表类型):

主要分为两种,一种是MyISAM5.0前默认引擎,包含.frm表结构定义文件.MYD表数据和.MYI索引)。插入查询速度快,但是不支持事务和外键,使用表锁。另一种是InnoDB5.5后默认引擎,包含.frm表空间和.idb表空间(数据和索引)),支持ACID和行级锁定。

 

MySQL依赖的配置文件(mysql在启动的时候会去找这些配置文件):

       /etc/my.cnf

       /etc/mysql/my.cnf

       $MYSQL_HOME/my.cnf

       ~/.my.cnf

配置文件中最重要的一个属性是datadir = /mydata/data,定义数据的存放目录。

 

数据库语言:

DDL:数据库模式定义语言,关键字:create
DML
:数据操纵语言,关键字:Insertdeleteupdate
DCL
:数据库控制语言,关键字:grantremove
DQL
:数据库查询语言,关键字:select

 

安装:

在centos6.5下默认是不安装mysql的,但我们可以使用方便的命令安装。

yum install mysql-server----------------------如果使用yuminstall mysql是无法启动mysql服务和登入mysql数据库的。

 

登入数据库:

mysql-------默认方式登入到数据库。默认的用户名是root,密码是空。

完整命令格式

mysql  -h hostname -u username-p password --port --protocol

查看mysql支持的数据库引擎:

mysql> show engines

    -> ;

+------------+---------+------------------------------------------------------------+--------------+------+------------+

| Engine     | Support |Comment                                                   | Transactions | XA   | Savepoints|

+------------+---------+------------------------------------------------------------+--------------+------+------------+

| MRG_MYISAM | YES     |Collection of identical MyISAM tables                      | NO           | NO   | NO        |

| CSV        | YES     | CSV storage engine                                         |NO           | NO   | NO        |

| MyISAM     | DEFAULT |Default engine as of MySQL 3.23 with great performance     | NO           | NO   | NO         |

| InnoDB     | YES     | Supports transactions, row-levellocking, and foreign keys | YES          | YES  | YES        |

| MEMORY     | YES     | Hash based, stored in memory, useful fortemporary tables  | NO           | NO   | NO        |

+------------+---------+------------------------------------------------------------+--------------+------+------------+

5 rows in set (0.02 sec)

支持五中引擎,常用两种,MyISAM和InnoDB。

mysql> show databases

    -> ;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| mysql              |

| test               |

+--------------------+

3 rows in set (0.00 sec)

第一个数据库INFORMATION_SCHEMA:提供了访问数据库元数据的方式。

第二个数据库mysql:这个是mysql的核心数据库,类似于sqlserver中的master表,主要负责存储数据库的用户、权限设置、关键字等mysql自己需要使用的控制和管理信息。不可以删除。

第三个数据库是test:这个是安装时候创建的一个测试数据库,和它的名字一样,是一个完全的空数据库,没有任何表,可以删除。

 

show命令:

1、show character set 支持字符集

         创建数据库时指定字符集

         create database|schemaif not exists studentsdb character set 'gbk' collate 'gbk_chinese_ci‘

2、show collation   支持排序规则和字符集

3、show global variables全局变量

 

创建一个数据库:

mysql> create database mydb;

Query OK, 1 row affected (0.08 sec)

 

mysql> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| mydb               |

| mysql              |

| test               |

+--------------------+

4 rows in set (0.05 sec)

 

进入数据库,查看某个表的信息:

mysql> use mysql;

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A

 

Database changed

mysql> show tables;

+---------------------------+

| Tables_in_mysql           |

+---------------------------+

| columns_priv              |

| db                        |

| event                     |

| func                      |

| general_log               |

| help_category             |

| help_keyword              |

| help_relation             |

| help_topic                |

| host                      |

| ndb_binlog_index          |

| plugin                    |

| proc                      |

| procs_priv                |

| servers                   |

| slow_log                  |

| tables_priv               |

| time_zone                 |

| time_zone_leap_second     |

| time_zone_name            |

| time_zone_transition      |

| time_zone_transition_type |

| user                      |

+---------------------------+

23 rows in set (0.00 sec)

 

mysql> describe user;

+-----------------------+-----------------------------------+------+-----+---------+-------+

| Field                 |Type                              | Null| Key | Default | Extra |

+-----------------------+-----------------------------------+------+-----+---------+-------+

| Host                  |char(60)                          |NO   | PRI |         |      |

| User                  |char(16)                          |NO   | PRI |         |      |

| Password              | char(41)                          | NO   |    |         |       |

| Select_priv           |enum('N','Y')                     |NO   |    | N       |       |

| Insert_priv           |enum('N','Y')                     |NO   |    | N       |       |

| Update_priv           |enum('N','Y')                     |NO   |    | N       |       |

| Delete_priv           |enum('N','Y')                     |NO   |    | N       |       |

| Create_priv           |enum('N','Y')                     |NO   |    | N       |       |

| Drop_priv             |enum('N','Y')                     |NO   |    | N       |       |

| Reload_priv           |enum('N','Y')                     |NO   |    | N       |       |

| Shutdown_priv         |enum('N','Y')                     |NO   |    | N       |       |

| Process_priv          |enum('N','Y')                     |NO   |    | N       |       |

| File_priv             |enum('N','Y')                     |NO   |    | N       |       |

| Grant_priv            |enum('N','Y')                     |NO   |    | N       |       |

| References_priv       |enum('N','Y')                     |NO   |    | N       |       |

| Index_priv            |enum('N','Y')                     |NO   |    | N       |      |

| Alter_priv            |enum('N','Y')                     |NO   |    | N       |       |

| Show_db_priv          |enum('N','Y')                     |NO   |    | N       |       |

| Super_priv            |enum('N','Y')                     | NO   |    | N       |       |

| Create_tmp_table_priv | enum('N','Y')                     | NO   |    | N       |       |

| Lock_tables_priv      |enum('N','Y')                     |NO   |    | N       |       |

| Execute_priv          |enum('N','Y')                     |NO   |    | N       |       |

| Repl_slave_priv       |enum('N','Y')                     |NO   |    | N       |       |

| Repl_client_priv      |enum('N','Y')                     |NO   |    | N       |       |

| Create_view_priv      |enum('N','Y')                     |NO   |    | N       |       |

| Show_view_priv        |enum('N','Y')                     |NO   |    | N       |       |

| Create_routine_priv   |enum('N','Y')                     |NO   |    | N       |      |

| Alter_routine_priv    |enum('N','Y')                     |NO   |    | N       |       |

| Create_user_priv      |enum('N','Y')                     |NO   |    | N       |       |

| Event_priv            |enum('N','Y')                     | NO   |    | N       |       |

| Trigger_priv          |enum('N','Y')                     |NO   |    | N       |       |

| ssl_type              |enum('','ANY','X509','SPECIFIED') | NO  |     |         |      |

| ssl_cipher            |blob                              |NO   |    | NULL    |       |

| x509_issuer           |blob                              |NO   |    | NULL    |       |

| x509_subject          |blob                              |NO   |    | NULL    |       |

| max_questions         |int(11) unsigned                  |NO   |    | 0       |       |

| max_updates           |int(11) unsigned                  |NO   |    | 0       |       |

| max_connections       |int(11) unsigned                  |NO   |    | 0       |      |

| max_user_connections  |int(11) unsigned                  |NO   |    | 0       |       |

+-----------------------+-----------------------------------+------+-----+---------+-------+

39 rows in set (0.00 sec)

user表非常重要,这里面存储了登陆用户的信息和权限等等。可以查看表中的数据。

mysql> select Host,User,Password from user;

+-----------+------+----------+

| Host      | User | Password|

+-----------+------+----------+

| localhost | root |         |

| slave-01  | root |          |

| 127.0.0.1 | root |         |

| localhost |      |          |

| slave-01  |      |         |

+-----------+------+----------+

5 rows in set (0.00 sec)

MySQL默认用户root3个,2个匿名。默认都是空密码的,这样是不安全的。


修改密码:

mysql> update user set Password=PASSWORD('redhat') whereHost='localhost';

Query OK, 2 rows affected (0.11 sec)

Rows matched: 2  Changed:2  Warnings: 0

 

mysql> select Host,User,Password from user;

+-----------+------+-------------------------------------------+

| Host      | User |Password                                 |

+-----------+------+-------------------------------------------+

| localhost | root | *84BB5DF4823DA319BBF86C99624479A198E6EEE9 |

| slave-01  | root |                                           |

| 127.0.0.1 | root |                                           |

| localhost |      |*84BB5DF4823DA319BBF86C99624479A198E6EEE9 |

| slave-01  |      |                                           |

+-----------+------+-------------------------------------------+

5 rows in set (0.00 sec)

如果使用exit再进入,直接输入mysql,还是可以进去,输入mysql-uroot -hlocalhost -p 回车,输入redhat,进不去......这是因为,需要重新启动才可以生效的啊。

service mysqld restart

再输入mysql就进不去了,输入mysql-hlocalhost -uroot -predhat 就可以进去了。如果添加用户名和密码直接使用insert 命令就可以了。

需要注意的是修改后的密码是加密的,必须要加密,数据库登陆默认就是比对加密后的密码,如果不加密直接存到数据库,就登不进去了。所以直接修改user表的时候一定要注意!

这种修改太麻烦了,容易出错,我们可以在登陆mysql前使用mysqladmin修改密码,此时我们的命令具有mysql的admin的权限。

[root@slave-01 ~]# mysqladmin -uroot-predhat password centos

[root@slave-01 ~]# mysql -hlocalhost -uroot -predhat

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (usingpassword: YES)

[root@slave-01 ~]#

[root@slave-01 ~]# mysql -hlocalhost -uroot -pcentos

第三种修改方式是刚进入mysql时修改

mysql> SET PASSWORD FOR 'root'@'localhost'=PASSWORD('redhat')

    -> ;

Query OK, 0 rows affected (0.00 sec)

mysql> exit

Bye

[root@slave-01 ~]# mysql -hlocalhost -uroot -pcentos

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (usingpassword: YES)

 [root@slave-01 ~]# mysql-hlocalhost -uroot -predhat

如果密码忘了的话,找回管理员密码

1stop service

2vim /etc/init.d/mysql 加入--skip-grant-tables--skip-networking,启动服务后,可以不用密码登录。

3set password for 'user@host'identified by 'password'不可以这么改

3只能通过update user set 。。。。。。。。。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值