常用的MySQL操作
常用的MySQL操作
1. 安装MySQL
① 下载软件包
② 初始化
解压
# tar -zxvf mysql-5.6.43-linux-glibc2.12-x86_64.tar.gz
判断是否有/usr/local/mysql目录,并将目录改为或设为/usr/local/mysql_old
# [ -d /usr/local/mysql ] && mv /usr/local/mysql /usr/local/mysql_old
移动MySQL文件到/usr/local/mysql下
# mv mysql-5.6.43-linux-glibc2.12-x86_64 /usr/local/mysql
建立MySQL用户
# useradd -s /sbin/nologin mysql
# cd /usr/local/mysql
创建datadir,数据库文件会放到这里
# mkdir -p /data/mysql
更改权限
# chown -R mysql:mysql /data/mysql
安装perl-Module-Install
# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql
此命令执行后你会看到两个OK,并且在/data/mysql目录下生成几个文件和目录然后用echo $?进行验证
③ 配置MySQL
复制配置文件到 /etc/my.cnf下
# cp support-files/my-default.cnf /etc/my.cnf
修改配置文件内容如下

复制启动脚本文件并修改其属性
# cp support-files/mysql.server /etc/init.d/mysqld
# chmod 755 /etc/init.d/mysqld
修改启动脚本
# vim /etc/init.d/mysqld

上图中为:datadir=/data/mysql
把mysqld服务加入到系统服务列表中
# chkconfig --add mysqld
使其开机就启动
# chkconfig mysqld on
启动服务

检查结果是否大于两行
[root@localhost ~]# ps aux |grep mysqld

看看有没有监听33306接口
没有netstat就使用命令:
[root@localhost ~]# yum install -y net-tools
[root@localhost ~]# netstat -ntpl

- 更改MySQL数据库root的密码
首次进入数据库是不需要密码的,如图所示:
[root@localhost ~]#/usr/local/mysql/bin/mysql -uroot

退出时直接输入quit或者exit即可。使用绝对路径这样不方便。但是单独输入一个mysql命令是不行的,因为/u sr/local/mysql/bin不在PATH这个环境变量里。如何把它加入环境变量PATH中呢?方法如下:
[root@localhost ~]# PATH=$PATH:/usr/local/mysql/bin
但重启Linux后还会失效,所以需要让它开机加载,如下所示:
[root@localhost ~]# echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
[root@localhost ~]# source /etc/profile
root@localhost ~]# mysql -uroot

上图中的命令中的-u的含义。它用来指定要登录的用户,后面有无空格均可。root用户是MySQL自带的管理员账户,默认是没有密码的,那么如何给root用户设定密码呢?操作方法如下:
[root@localhost ~]# mysqladmin -uroot password '123456'

这样就给mysql的root账户设置了密码,密码为123456,注意在生产环境中千万不要这么简单的密码。在执行命令过程中它会返回一条警告信息,意思是在命令行下面暴露了密码。这样不安全。在执行一次上面的命令。如下所示:
[root@localhost ~]# mysql -root

这里报错了,它提示我们root账号是需要密码登录的。接下来重新输入密码登录,如下所示:
[root@localhost ~]# mysql -uroot -p '123456'

输入密码时需要加-p选项,后面可以直接跟密码。-p选项后面不可以有空格,密码可以不加单引号。当然,-p选项后面也可以不加密码,已和用户交互的方式输入密码,如下所示:

2.连接数据库
你可以使用命令mysql -u root -p连接数据库,但连接的只是本地数据库需要连接网络中某一个主机上的mysql。如下所示:
3.MySQL基本操作的常用命令
在日常工作中,难免会遇到一些与MySQL相关的操作,比如建库、建表、查询MySQL状态等。
1) 查询当前库

注意 mysql命令的结尾处需要加一个分号。
2) 查询某个库的表
首先需要切换到某个库里,如下所示:

在切换库的时候,它提示这个操作会把当前库里的所有表的字段全部读一遍,你可以在启动MySQL的时候加上-A选项关闭这个特性(即使有这个特性倒也不影响什么,你可以忽略它。)然后再把表列出来,如下所示:

3) 查看某个表的全部字段
查看表的全部字段的命令如下:

另外,也可以使用下面的这条命令,显示的信息更详细,而且还可以把建表语句全部列出来,如下所示;

这条命令后面加了一个\G,目的是让列出来的结果竖排显示,这样看起来更清晰;如果不加,则很乱。
4) 查看当前是哪个用户
查看当前用户的命令如下:

5) 查看当前所使用的数据库
查看当前数据库的命令如下:

6) 创建一个新库
新建一个库的命令如下:

7) 新建一个表的命令如下:

注意,这里的字段名id和name需要用反引号括起来。
8) 查看当前数据库的版本
查看MySQL版本的命令如下:

9) 查看MySQL的当前状态
查看MySQL当前状态的命令如下:

10) 查看MySQL的参数
查看MySQL各参数的命令如下:

11) 修改MySQL的参数
举例来说,修改参数max_connect_errors的操作方法如下:

在MySQL命令行,符号%类似于shell下的*,表示统配。使用命令set global可以临时修改某些数据,但是重启MySQL服务后这些修改会失效。所以,如果你想让这些修改恒久生效,就要在配置文件my.cnf中定义。
12) 查看当前MySQL服务器的队列
查看服务器队列在日常的管理工作中最为频繁。因为使用它可以查看当前MySQL在干什么,也可以发现是否有锁表,如下所示:

13) 创建一个普通用户并授权
授权命令如下:

其中,all表示所有权限(如读、写、查询、删除等操作);有两个*。前者表示所有的数据库,后者表示所有的表;identifide by 后面跟密码,用单引号括起来。这里的user1特指localhost上的user1。如果是给网络其他机器上的某个用户授权,则要执行如下命令:

其中,用户和主机的ip之间有一个符号@。另外,命令中主机ip可以用%替代,表示所有主机。
4.常用的SQL语句
1) 查询语句
第一种形式

其中,mysql.user表示MySQL库的user表,count(*)表示表中共有多少行。
第二种形式

它表示查询MySQL库的db表中的所有数据。当然也可以查询单个字段或者多个字段,如下所示:

同样,在查询语句中也可以使用万能匹配符%,如下所示:

2) 插入一行
插入操作在MySQL中也很普遍,如下所示:

3) 更改表的某一行
MySQL表里存放的数据支持更改某个字段,如下所示:

4) 清空某个表的数据
有时我们不希望删除表,而只是想清除某个表的数据,如下所示:
mysql> drop table db1.t1;
Query OK, 0 rows affected (0.00 sec)
5) 如果某个表不需要了,可以直接删除,如下所示:

6) 删除数据库
表可以删除,当然数据库也可以删除,如下所示:

- MySQL数据库的备份与恢复
1) MySQL备份
备份MySQL要使用mysqldump命令,具体用法如下:
[root@localhost ~]# mysqldump -uroot -p mysql >/tmp/mysql.sql
2) MySQL的恢复和备份相反,如下所示:
[root@localhost ~]# mysqldump -uroot -p mysql </tmp/mysql.sql
浙公网安备 33010602011771号