MySQL的基本操作

                     MySQL的基本操作

一、忘记root密码

1编辑mysql主配置文件 my.cnf,配置文件路径:/etc/my.cnf

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

    然后再配置文件中找到[mysqld]字段,在[mysqld]字段下添加参数skip-grant ,如下图:

wKiom1WDqbiCSh6vAAIBQGOgv7A141.jpg

退出保存

 

重启mysql服务

[root@mysql ~]#
/etc/init.d/mysqld restart
Shutting down MySQL.... SUCCESS! #这个提示就表示MySQL已经启动起来


2、重启完成之后使用mysql -uroot就可以不用输入密码直接登录MySQL服务器

     但是登陆的时候报错信息如下:

[root@mysql ~]#mysql -uroot
-bash: mysql:command not found

解决办法是执行有三个:

  A、先更改PATH,允许mysql登录,但是这样子的做法呢,就是机器重启之后你登录的时候

还是会报错,还需要执行这个命令,另外一个办法就是把这个命令加入到开启启动文件呢中

去。

        [root@mysql ~]#  PATH=$PATH:/usr/local/mysql/bin

加入到开启动文件中去,添加到最后一行,如图所示

开机启动配置文件:/etc/rc.local

wKioL1WDq4qBNHQzAAEjVKaDr7s515.jpg

 B、做软连接接

以上AB两种方法任何一个都可以

 

系统重启之后,需要输入:[root@mysql ~]# source /etc/rc.local 命令然后就可以使用密码登录了

 

现在可以登录mysql,不需要输入密码,直接可以登录

[root@mysql ~]#mysql -uroot
elcome to the MySQL
monitor.  Commands end with ; or \g.
Your MySQL
connection id is 4
Server version:
5.1.40 MySQL Community Server (GPL)
 
Type 'help;' or '\h'
for help. Type '\c' to clear the current input statement.
 
mysql>

3、更改密码

   首先use mysql进去这个库

mysql> use mysql

Database changed

 

然后更新

mysql> update user set password=password('123456') where user='root';
Query OK, 2 rows
affected (0.04 sec)
Rows matched: 3  Changed: 2 
Warnings: 0

这个命令的意思就是更新user表,修改密码为123456,所有的root都更改

 

4、密码更改完成之后需要刷新表,刷新或者重启都可以

    mysql> flush privileges;

    Query OK, 0 rows affected (0.05 sec)

 

5、密码修改完成之后,需要在/etc/my.cnf文件中把刚开始添加的skip-gran字段删除

    不然mysql没有安全性

  

     然后重启mysql服务

  

  [root@mysql ~]#/etc/init.d/mysqld restart
     Shutting down MySQL. SUCCESS! 
     Starting MySQL...SUCCESS!


6、在此登录mysql的时候需要输入密码才可以登录
       不输入密码报错


 

[root@mysql ~]# mysql -uroot
ERROR 1045 (28000):
Access denied for user 'root'@'localhost' (using password: NO)

输入密码登录

[root@mysql ~]#mysql -uroot -p654321
Welcome to the MySQL
monitor.  Commands end with ; or \g.
Your MySQL
connection id is 4
Server version:
5.1.40 MySQL Community Server (GPL)
 
Type 'help;' or '\h'
for help. Type '\c' to clear the current input statement.
 
mysql>

 

-p:后面跟的是密码,这是登录方式

 

7、直接在shell中执行mysql的命令。需要加上-e参数如下图

[root@mysql ~]# mysql -uroot -p654321 -e "use mysql; select user,host from user where user='root'"

wKiom1WDqf6jmwuaAAGVLa74oiA630.jpg

8、使用tcp来连接数据库

      [root@mysql ~]# mysql -uroot -p654321 -h127.0.0.1 -P3306

-h:指定远程主机的ip

-P(大写的):用来指定远程主机mysql的绑定端口


二、mysql常用操作

1查看都有哪些库  show databases;

mysql> show
databases;
+--------------------+
| Database           |
+--------------------+
| information_schema
|
| cheng              |
| mysql              |
| test               |
+--------------------+
4 rows in set (0.04
sec)

 

information_schemamysqltest这三个表示默认都存在的

结束的标志是以封号(;)来结尾的

 

2查看某个库的表

先进入一个库

mysql> use cheng

Database changed

 

查看cheng这个库里都有哪些表

mysql> show tables;

 

3查看表的字段 desc tb;

mysql> desc pre_common_block;

wKiom1WDqjyyS-wjAAKNYIP7zOE121.jpg

desc后面跟表名

 

3查看建表语句 show create table tb;

 mysql> show create table pre_common_block;

 

使用G可以分割

mysql> show create table pre_common_block\G;

4当前是哪个用户  select user();

mysql> select user();
+----------------+
| user()         |
+----------------+
| root@localhost |
+----------------+
1 row in set (0.00
sec)

 

5当前库 select database();

mysql> select database();

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

| database() |

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

| cheng      |

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

1 row in set (0.00 sec)

 

6创建库 create database db1; 

mysql> create database cheng2;

Query OK, 1 row affected (0.02 sec)

 

7创建表 create table t1 (`id` int(4), `name` char(40));  

    进入刚才创建的库

     mysql> use cheng2;

     Database changed

 

     创建表

mysql> create table `st` (`id` int(4),`name` char(50)) ENGINE=MYISAM DEFAULT CHARSET=gbk;
Query OK, 0 rows
affected (0.13 sec)

Init:类型

Char:字符串

 ENGINE=MYISAM DEFAULT CHARSET=gbk:默认引擎

查询刚才创建的st表的语句

mysql> show create table st\G;
***************************
1. row ***************************
       Table: st
Create Table: CREATE
TABLE `st` (
  `id` int(4) DEFAULT NULL,
  `name` char(50) DEFAULT NULL
) ENGINE=MyISAM
DEFAULT CHARSET=gbk
1 row in set (0.00
sec)
 
ERROR:
No query specified
 
 
ERROR:
No query specified

查看库里面有几个表

mysql> show tables;

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

| Tables_in_cheng2 |

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

| st               |

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

1 row in set (0.00 sec)

 

8查看数据库版本 select version(); 

mysql> select version();

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

| version() |

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

| 5.1.40    |

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

1 row in set (0.00 sec)

 

9、更改表的某一行 update db1.t1 set name='aaa' where id=1

mysql> update st set name='ct' where id=1;

Query OK, 1 row affected (0.00 sec)

Rows matched: 1  Changed: 1  Warnings: 0

 

查看更改过的结果

mysql> select * from st;

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

| id   | name |

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

|    1 | ct   |

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

1 row in set (0.00 sec)

 

 

10、插入新的一行

mysql> insert into st(id,name) values(1,'cheng168');

Query OK, 1 row affected (0.01 sec)

 

查询表

mysql> select * from st

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

| id   | name     |

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

|    1 | cheng168 |

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

1 row in set (0.00 sec)

 

11、删除表中的一行

mysql> delete from st where name='ct'

Query OK, 1 row affected (0.01 sec)

 

查看st表,发现表中的一行已经不存在了,成了空表

mysql> select * from st;

Empty set (0.00 sec)

 

12、删除一个表中的所有行

mysql> truncate table st;

Query OK, 0 rows affected (0.00 sec)

查看

mysql> select * from st;

Empty set (0.00 sec)

 

清空表 truncate table db1.t1; 

13删除表 drop table db1.t1; 

mysql> drop table st;

Query OK, 0 rows affected (0.08 sec)

 

14删除数据库 drop database db1; 

mysql> drop database cheng2;

Query OK, 0 rows affected (0.16 sec)

 

Linux系统中,使用cat .mysql_history可以查看mysql的历史命令

[root@mysql ~]# cat .mysql_history 

 

15创建普通用户并授权 grant all on cheng1.* to 'user1'@'127.0.0.1' identified by '123456';

 mysql> grant all on cheng1.* to 'user1'@'127.0.0.1' identified by '123456';

Query OK, 0 rows affected (0.02 sec)

all:表示所所有的权限

*.*:前面的*表示的是所有的数据库,后面的*表示的是所有的表

Identified by:后面跟密码,要使用单引号括起来

127.0.0.1:表示的是网络上的主机,当然也可以%号来表示,使用%号就表示所有

 

16查看mysql状态 show status;

mysql> show status;

wKioL1WDrBaxAf3YAAJf4jIlT6k285.jpg

17更改密码 UPDATE mysql.user SET password=PASSWORD("newpwd") WHERE user='username' ;   

 

18 show variables:查看参数

         

mysql> show variables;

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

| Variable_name                           | Value                                                                                     |

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

| auto_increment_increment                | 1                                                                                         |

| auto_increment_offset                   | 1                                                                                         |

| autocommit                              | ON                                                                                        |

| automatic_sp_privileges                 | ON                                                                                        |

| back_log                                | 50                                                                                        |

 

 

19修改mysql参数

 过滤出带有关键字的参数:show variables like 'max_connect%';

 mysql>  show variables like 'max_connect%';

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

| Variable_name      | Value |

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

| max_connect_errors | 10    |

| max_connections    | 151   |

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

2 rows in set (0.00 sec)

 

修改参数:set global max_connect_errors = 1000; 

mysql> set global max_connect_errors = 1000;

Query OK, 0 rows affected (0.00 sec)

 

现在查看已经把max_connect_errors参数修改了

mysql>  show variables like 'max_connect_errors';

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

| Variable_name      | Value |

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

| max_connect_errors | 1000  |

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

1 row in set (0.00 sec)

 

 set global:临时修改某些参数,MySQL重启之后就会还原,永久生效,需要修改my.cnf文件

%:相当于Linux*的意思,通配的意思

 

20查看mysql队列 show processlist; 

mysql> show processlist;

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

| Id | User | Host      | db   | Command | Time | State | Info             |

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

|  2 | root | localhost | NULL | Query   |    0 | NULL  | show processlist |

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

1 row in set (0.00 sec)

 

21查询 select count(*) from mysql.user;

mysql> select count(*) from mysql.user;

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

| count(*) |

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

|        7 |

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

1 row in set (0.01 sec)

 

Mysql.user:表示的是mysql库中的user

count*):表示的是表中有多少行

 

22修复表 repair table tb1 [use frm];

mysql> repair table pre_ucenter_settings;

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

| Table                      | Op     | Msg_type | Msg_text |

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

| cheng.pre_ucenter_settings | repair | status   | OK       |

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

1 row in set (0.05 sec)

pre_ucenter_settings:是表名

也可以在使用repair table pre_ucenter_settings use_frm;来修复

use_frm:

 select * from mysql.db; select * from mysql.db where host like '10.0.%'; 

 

三、mysql备份与恢复

1备份数据库 mysqldump -uroot -p db >1.sql 

[root@mysql ~]# mysqldump -uroot -p654321 cheng > /tmp/mysqbackup.sql

cheng:数据库名称,就是你要备份哪一个数据库

/tmp/mysqbackup.sql:备份到/tmp/目录下,并且命名为mysqbackup.sql

 

2恢复 mysql -uroot -p db <1.sql  

[root@mysql ~]# mysql -uroot -p654321 cheng < /tmp/mysqbackup.sql

 

3只备份一个表  mysqldump -uroot -p db tb1 > 2.sql

     恢复的时候跟恢复数据时一样的,不需要指定表名

 

4备份时指定字符集 mysqldump -uroot -p --default-character-set=gbk  db >1.sql

   --default-character-set=gbk:指定字符集

 

5  恢复也指定字符集 mysql -uroot -p --default-character-set=utf8  db  < 1.sql

 

6、只备份建表语句

 [root@mysql ~]# mysqldump -uroot -p654321 -d cheng pre_forum_post> /tmp/post.sql

      -d:只备份建表语句


有错误的地方恳请大神指正,小白会感激不尽同时也会继续修改


你可能感兴趣的:(command,输入密码)