您的位置:首页 > 数据库 > MySQL

MySQL的基本操作

2015-06-19 13:45 871 查看
MySQL的基本操作
一、忘记root密码1、编辑mysql主配置文件 my.cnf,配置文件路径:/etc/my.cnf [root@mysql ~]# vim
/etc/my.cnf 然后再配置文件中找到[mysqld]字段,在[mysqld]字段下添加参数skip-grant ,如下图:


退出保存 重启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

B、做软连接接以上A、B两种方法任何一个都可以 系统重启之后,需要输入:[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 mysqlDatabase 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'"


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_schema、mysql、test这三个表示默认都存在的结束的标志是以封号(;)来结尾的 2、查看某个库的表先进入一个库mysql> use chengDatabase changed 查看cheng这个库里都有哪些表mysql>
show tables;
3、查看表的字段 desc tb;mysql> desc
pre_common_block;


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=1mysql> 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;

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.sqlcheng:数据库名称,就是你要备份哪一个数据库/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 输入密码