首页 > 数据库技术 > 详细

mysql常用操作

时间:2016-01-08 00:35:31      阅读:235      评论:0      收藏:0      [点我收藏+]

mysql默认的是没有给mysql设置密码可以直接登录

[root@zhangmengjunlinux ~]# mysql -uroot

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 2

Server version: 5.1.73-log MySQL Community Server (GPL)


Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.


Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.


Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement.


mysql> 

但是在正常情况下为了安全考虑应该给mysql设置一个密码,用这个命令

[root@zhangmengjunlinux ~]# mysqladmin -uroot password ‘zhangmengjun‘密码

我们再次不用密码是登录不了的

[root@zhangmengjunlinux ~]# mysql -uroot

ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: NO)

我们用密码登录,这回能登录上了

[root@zhangmengjunlinux ~]# mysql -uroot -p 

Enter password: 

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 6

Server version: 5.1.73-log MySQL Community Server (GPL)


Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.


Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.


Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement.


mysql> 

这个时候假如我们忘记了密码是什么,我们可以通过一个办法初始化一下首先要编辑配置文件

[root@zhangmengjunlinux ~]# vim /etc/my.cnf 

在这个里面我们加入一条 skip_grant 不去授权

技术分享

保存,重新启动mysql

[root@zhangmengjunlinux ~]# /etc/init.d/mysqld restart

Shutting down MySQL... SUCCESS! 

Starting MySQL.... SUCCESS!

mysql从新启动完之后就可以无密码进去了

技术分享

然后我们使用mysql库

mysql> use mysql 使用mysql库

Database changed

然后更新一个表新密码menglei

mysql> update user set password=password (‘menglei‘) where user=‘root‘;

Query OK, 3 rows affected (0.06 sec)

Rows matched: 3  Changed: 3  Warnings: 0


mysql> 

在这里三行发生了改变,我们去看一下

mysql> select * from user where user=‘root‘\G;

*************************** 1. row ***************************

                 Host: localhost

                 User: root

             Password: *F13236A6862262401791328A4F70F7B2721BF475

          Select_priv: Y

          Insert_priv: Y

          Update_priv: Y

          Delete_priv: Y

          Create_priv: Y

            Drop_priv: Y

          Reload_priv: Y

        Shutdown_priv: Y

         Process_priv: Y

            File_priv: Y

           Grant_priv: Y

      References_priv: Y

           Index_priv: Y

           Alter_priv: Y

         Show_db_priv: Y

           Super_priv: Y

Create_tmp_table_priv: Y

     Lock_tables_priv: Y

         Execute_priv: Y

      Repl_slave_priv: Y

     Repl_client_priv: Y

     Create_view_priv: Y

       Show_view_priv: Y

  Create_routine_priv: Y

   Alter_routine_priv: Y

     Create_user_priv: Y

           Event_priv: Y

         Trigger_priv: Y

             ssl_type: 

           ssl_cipher: 

          x509_issuer: 

         x509_subject: 

        max_questions: 0

          max_updates: 0

      max_connections: 0

 max_user_connections: 0

*************************** 2. row ***************************

                 Host: zhangmengjunlinux.com

                 User: root

             Password: *F13236A6862262401791328A4F70F7B2721BF475

          Select_priv: Y

          Insert_priv: Y

          Update_priv: Y

          Delete_priv: Y

          Create_priv: Y

            Drop_priv: Y

          Reload_priv: Y

        Shutdown_priv: Y

         Process_priv: Y

            File_priv: Y

           Grant_priv: Y

      References_priv: Y

           Index_priv: Y

           Alter_priv: Y

         Show_db_priv: Y

           Super_priv: Y

Create_tmp_table_priv: Y

     Lock_tables_priv: Y

         Execute_priv: Y

      Repl_slave_priv: Y

     Repl_client_priv: Y

     Create_view_priv: Y

       Show_view_priv: Y

  Create_routine_priv: Y

   Alter_routine_priv: Y

     Create_user_priv: Y

           Event_priv: Y

         Trigger_priv: Y

             ssl_type: 

           ssl_cipher: 

          x509_issuer: 

         x509_subject: 

        max_questions: 0

          max_updates: 0

      max_connections: 0

 max_user_connections: 0

*************************** 3. row ***************************

                 Host: 127.0.0.1

                 User: root

             Password: *F13236A6862262401791328A4F70F7B2721BF475

          Select_priv: Y

          Insert_priv: Y

          Update_priv: Y

          Delete_priv: Y

          Create_priv: Y

            Drop_priv: Y

          Reload_priv: Y

        Shutdown_priv: Y

         Process_priv: Y

            File_priv: Y

           Grant_priv: Y

      References_priv: Y

           Index_priv: Y

           Alter_priv: Y

         Show_db_priv: Y

           Super_priv: Y

Create_tmp_table_priv: Y

     Lock_tables_priv: Y

         Execute_priv: Y

      Repl_slave_priv: Y

     Repl_client_priv: Y

     Create_view_priv: Y

       Show_view_priv: Y

  Create_routine_priv: Y

   Alter_routine_priv: Y

     Create_user_priv: Y

           Event_priv: Y

         Trigger_priv: Y

             ssl_type: 

           ssl_cipher: 

          x509_issuer: 

         x509_subject: 

        max_questions: 0

          max_updates: 0

      max_connections: 0

 max_user_connections: 0

3 rows in set (0.03 sec)


ERROR: 

No query specified


mysql> 

这个时候我们不用密码也能登上去,我们要先把配置文件里的skip_grant去掉

然后从新启动mysql,输入新的密码就可以登录了

技术分享

mysql登录,本地登陆

[root@zhangmengjunlinux ~]# mysql -uroot -pmenglei

技术分享远程登陆mysql

[root@zhangmengjunlinux ~]# mysql -uroot h192.168.140.100 -P3306 -pmenglei

技术分享这个时候是登陆不了的,我们来测一下有没有监听192.168.140.100 3306端口,提示不允许去连接,因为我们还没有授权,我们可以使用127.0.0.1去试一试,这个授权了

技术分享它可以登陆上去,那我们怎么样去给192.168.140.100授权呢,授权的语句

mysql> grant all on *.* to ‘root‘@‘192.168.140.100‘ identified by ‘menglei‘;

all是所有的权限 *.*库 表 @后面跟的是客户端的IP地址 by后面跟密码

我们可以select看一下

mysql> select * from user where host=‘192.168.140.100‘\G;

技术分享看一下当前登陆用户是谁

mysql> select user();

技术分享

当本地有多个mysql时候,我们可以通过sock登陆

[root@zhangmengjunlinux ~]# mysql -uroot -S /tmp/mysql.sock -p

技术分享mysql切换库,我们看看有哪些库

mysql> show databases;

技术分享

我们可以切换库

mysql> use mysql;

Database changed

mysql> use discuz;

Database changed

mysql>  那我们怎么去看我们现在在哪个库里面呢

技术分享

mysql> select database();  查看在哪个库

mysql> select user(); 查看它在哪个用户

mysql> select version(); 查看这个用户的版本

我们现在使用的是discuz这个库,看看这个库里边有哪些表呢,关于数据库有几个概念,首先是库,库下面是表,表下面是行,行下面有一些字段 (库-表-行-字段);那我们首先看的是库

mysql> use discuz  这个命令可以加分号也可以不加分号,但其他的命令需要加

Database changed

看看有哪些表

mysql> show tables;

技术分享

这是这个库里面都有哪些表,我们还可以看表有哪些行(表是怎么创建的)有包含了哪些字段

mysql> desc pre_common_admincp_cmenu;

desc 描述一个表

技术分享

我们也可以看看这个表示的创建语句

mysql> show create table  pre_common_admincp_cmenu\G;

技术分享

那这个就是pre_common_admincp_cmenu这个表怎么去创建的

那下面我们来去创建一个库

mysql> create database mengjun;

Query OK, 1 row affected (0.02 sec)


mysql> use mengjun;

Database changed

技术分享

然后创建一个表

mysql> create table tb1 (`id` int(4), `name` char(40)) ENGINE=MyISAM DEFAULT CHARSET=gbk;

Query OK, 0 rows affected (0.07 sec)


创建tb1表 ,id格式是int,长度4位, name格式是char长度是40

技术分享

mysql> desc tb1;

mysql> show create table tb1\G; 可以看到创建表的语句

技术分享

在表里插入语句

mysql> insert into tb1 values (1, ‘mengjun‘); 因为有连个字段id 和name所以我们要分开写,id是1,name我们要给mengjun加入‘单引号因为是char

插入完之后我们select一下看看

mysql> select * from tb1;

技术分享

那我们还可以继续插入

mysql> insert into tb1 values (2,‘menglei‘);

技术分享

当然我们也可以单独之插入一个字段

mysql> insert into tb1 (`id`) values(2);

Query OK, 1 row affected (0.00 sec)

技术分享

你会发现这个时候name变成NULL空了 id 还是2

mysql> insert into tb1 (`name`) values (‘55‘);

Query OK, 1 row affected (0.00 sec)

技术分享

我们也可以反过来定义先name在id 

mysql> insert into tb1 (`name`,`id`) values(‘55‘,6);

技术分享

我们还可以更新一个数据

mysql> update tb1 set id=5 where name=‘55‘;

技术分享

下面我们删除一行

mysql> delete from tb1 where name=‘55‘;

技术分享

清空一个表但是不能删除这个表

mysql> truncate table mengjun.tb1;

技术分享

干倒一个表

mysql> drop table tb1;

技术分享

干倒一个库

mysql> drop database mengjun; 

技术分享在上面我们用过这个授权,其实授权也是创建新的用户,那我们讲一讲其他相关的概念

mysql> grant all on discuz.* to ‘user1‘@‘192.168.140.%‘ identified by ‘mengjun‘;

Query OK, 0 rows affected (0.12 sec)

on可以指定一个库discuz.跟一个表或许.*所有的表,to 跟用户名 @跟IP %号代表通配

有时候创建了用户没有即时生效,因为数据可能保存在内存里,还没有到硬盘里,这个时候需要刷新一下权限

mysql> flush privileges; 刷新权限

Query OK, 0 rows affected (0.00 sec)


mysql> show processlist; 这是查看当前数据有哪些列队,你这个数据库如果很忙的话,它可能会有很多的查询,让我们知道这个库具体在干些什么,就行我们linux系统里面的ps一样我们可以查看到都有哪些进程,任务在工作。

技术分享

mysql> show variables;

查看变量,这些参数都可以再/etc/my.cnf里面去定义它的,那我们重新更改配置文件之后想让它生效得重启mysql的服务,有时候mysql的服务暂时用着它,我不想重启怎么办,可以再mysql里边操作

技术分享

mysql> set global max_connections=200;

mysql> show variables like ‘max_conne%‘;  like就像是grep 

技术分享

mysql的错误日志在data_dir下,

技术分享

这里会看到和hostname同名的一个后面有err这个就是错误日志

技术分享我们找出错误去修复一个表怎么修复?

mysql> repair table discuz.pre_forum_post;

技术分享

mysql常用操作

原文:http://mengjunlinux.blog.51cto.com/10772888/1732697

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!