【无标题】

yum -y install mysql-server mysql
systemctl start mysqld.service
ps -C mysqld
ss -ntulp | grep 3306
systemctl status mysqld.service
systemctl enable mysqld

# 主配置文件
[root@mysql50 ~]# cat /etc/my.cnf.d/mysql-server.cnf 
[mysqld]                                #MySQL服务进程
datadir=/var/lib/mysql                  #数据文件的存储目录(数据库目录)
socket=/var/lib/mysql/mysql.sock        #本地连接MySQL服务器需要sock文件
log-error=/var/log/mysql/mysqld.log     #错误日志文件位置
pid-file=/run/mysqld/mysqld.pid         #服务进程ID文件位置

# 端口号
3306

# 传输协议
TCP

# 进程所有者、所属组
mysql 

命令格式

mysql -h -P -u -p

选项:

-h 数据库服务器ip地址

-P 数据库服务端口

-u 用户名

-p 密码

基本操作

mysql> select version(); #查看服务软件版本

mysql> select user(); #查看登陆用户

mysql> show databases; #查看已有库

mysql> use 库名; #切换库

mysql> select database(); #查看当前所在库

mysql> show tables; #查看库里已有表

mysql> exit; #断开连接

密码管理

密码的设置与修改

操作系统管理员有此权限

命令格式

设置密码

]# mysqladmin -uroot -hlocalhost -p password "新密码"(端口默认3306,-P这里忽略)

修改密码

]# mysqladmin -uroot -hlocalhost -p旧密码 password "新密码"(端口默认3306,-P这里忽略)

隐藏密码修改

]# mysqladmin -uroot -hlocalhost -P3306 -p password

Enter password: #输入旧密码

New password: #输入新密码

Confirm new password: #再次输入新密码

密码破解

配置服务可以无密码登录

[root@mysql50 ~]# vim /etc/my.cnf.d/mysql-server.cnf 
[mysqld]
......
skip-grant-tables    #添加这行(跳过授权表)
......

删除不知道的密码

mysql> desc mysql.user;    #查看表头名
mysql> select host,user,authentication_string from mysql.user;    #查看表头的值
mysql> update mysql.user set authentication_string="" where host="localhost" and user="root";    #删除密码
mysql> select host,user,authentication_string from mysql.user;
mysql> flush privileges;    #刷新权限(确保删除生效)

配置服务需要密码登录

[root@mysql50 ~]# vim /etc/my.cnf.d/mysql-server.cnf 
[mysqld]
......
skip-grant-tables    #删除此行 需要密码登录
......

登录后设置新密码

mysql> alter user root@"localhost" identified by "123456";    #设置新密码

使用新密码登录

[root@mysql50 ~]# mysql -uroot -p123456

配置步骤

准备phpmyadmin软件运行环境(运行nginx服务,且配置服务可以解释php脚本)

安装依赖的软件包

[root@mysql50 ~]# yum -y install gcc make pcre-devel 

安装源码的nginx软件

[root@mysql50 ~]# tar -xf nginx-1.22.1.tar.gz
[root@mysql50 ~]# cd nginx-1.22.1/
[root@mysql50 nginx-1.22.1]# ./configure 
配置错误
./configure: error: the HTTP gzip module requires the zlib library.
[root@mysql50 nginx-1.22.1]# yum -y install zlib-devel
[root@mysql50 nginx-1.22.1]# ./configure 
[root@mysql50 nginx-1.22.1]# make && make install
[root@mysql50 nginx-1.22.1]# ls /usr/local/nginx/
conf  html  logs  sbin

修改配置文件实现动静分离

启动nginx服务

[root@mysql50 nginx]# /usr/local/nginx/sbin/nginx -t
[root@mysql50 nginx]# /usr/local/nginx/sbin/nginx 

安装解释php代码的php-fpm服务软件

[root@mysql50 nginx]# yum -y install php php-mysqlnd php-fpm php-devel php-json

修改php-fpm服务软件

[root@mysql50 nginx]# vim /etc/php-fpm.d/www.conf 
;listen = /run/php-fpm/www.sock
listen = 127.0.0.1:9000

启动php-fpm服务软件

[root@mysql50 nginx]# systemctl start php-fpm

编写php代码,测试环境

[root@mysql50 nginx]# vim html/a.php
<?php
$i = 100 ;
echo $i ;
echo "\n" ;
?>
[root@mysql50 nginx]# curl http://localhost/a.php
100

安装phpmyadmin软件

解压软件

[root@mysql50 ~]# yum -y install unzip
[root@mysql50 ~]# unzip phpMyAdmin-5.2.1-all-languages.zip 

把解压目录拷贝到网页目录下

[root@mysql50 ~]# mv phpMyAdmin-5.2.1-all-languages /usr/local/nginx/html/phpmyadmin
[root@mysql50 ~]# cd /usr/local/nginx/html/phpmyadmin/
[root@mysql50 phpmyadmin]# cp config.sample.inc.php config.inc.php

创建软件的主配置文件并定义管理的数据库服务器

[root@mysql50 phpmyadmin]# vim config.inc.php
$cfg['Servers'][$i]['host'] = 'localhost';

客户端打开浏览器访问软件,对数据库服务器做管理

基础查询

[root@mysql50 ~]# mysql -uroot -p123456 < /root/tarena.sql

mysql> show databases;

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

| Database |

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

| information_schema |

| mysql |

| performance_schema |

| sys |

| tarena |

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

5 rows in set (0.00 sec)

mysql> use tarena;

mysql> show tables;

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

| Tables_in_tarena |

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

| departments |

| employees |

| salary |

| user |

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

4 rows in set (0.00 sec)

select语法

语法格式1:select 字段列表 from 库名.表名;

语法格式2:select 字段列表 from 库名.表名 where 筛选条件;

mysql> select name from tarena.user; #查看一个表头

mysql> select name,uid from tarena.user; #查看多个表头

mysql> select * from tarena.user; #查看所有表头

加条件查看

mysql> select * from tarena.user where name="root";

mysql> select name from tarena.user where uid=2;

语法规范

必须遵守,命令才会执行

\c终止sql命令

默认命令不支持tab键补全

每条SQL命令以;或\G结束

每条命令可以根据需要进行缩进或换行

SQL命令不区分字母大小写(密码、变量值除外)

筛选条件

数值比较

符号两边必须是数字或数值类型的表头

|------|-------|----------|
| 比较符号 | 说明 | 例子 |
| = | 相等 | uid=3 |
| > | 大于 | uid>3 |
| >= | 大于或等于 | uid>=3 |
| < | 小于 | uid<3 |
| <= | 小于或等于 | uid<=3 |
| != | 不相等 | uid != 3 |

# 查看第3行的行号、用户名、uid、gid  四个表头的值
mysql> select id,name,uid,gid from user where id=3;
+----+--------+------+------+
| id | name   | uid  | gid  |
+----+--------+------+------+
|  3 | daemon |    2 |    2 |
+----+--------+------+------+
1 row in set (0.00 sec)

# 查看前2行的行号用户名、uid、gid 四个表头的值
mysql> select id,name,uid,gid from user where id<3;
+----+------+------+------+
| id | name | uid  | gid  |
+----+------+------+------+
|  1 | root |    0 |    0 |
|  2 | bin  |    1 |    1 |
+----+------+------+------+
2 rows in set (0.00 sec)

# 查看前3行的行号、用户名、uid、gid  四个表头的值
mysql> select id,name,uid,gid from user where id<=3;
+----+--------+------+------+
| id | name   | uid  | gid  |
+----+--------+------+------+
|  1 | root   |    0 |    0 |
|  2 | bin    |    1 |    1 |
|  3 | daemon |    2 |    2 |
+----+--------+------+------+
3 rows in set (0.00 sec)

# 查看前uid号大于6000的行号、用户名、uid、gid  四个表头的值
mysql> select id,name,uid,gid from user where uid>6000;
+----+-----------+-------+-------+
| id | name      | uid   | gid   |
+----+-----------+-------+-------+
| 22 | nfsnobody | 65534 | 65534 |
+----+-----------+-------+-------+
1 row in set (0.00 sec)

# 查看前uid号大于等于1000的行号、用户名、uid、gid  四个表头的值
mysql> select id,name,uid,gid from user where uid>=1000;
+----+-----------+-------+-------+
| id | name      | uid   | gid   |
+----+-----------+-------+-------+
| 22 | nfsnobody | 65534 | 65534 |
| 24 | plj       |  1000 |  1000 |
+----+-----------+-------+-------+
2 rows in set (0.00 sec)

# 查看uid号和gid号相同的行 仅显示行号、用户名、uid、gid  四个表头的值
mysql> select id,name,uid,gid from user where uid=gid;
+----+-----------------+-------+-------+
| id | name            | uid   | gid   |
+----+-----------------+-------+-------+
|  1 | root            |     0 |     0 |
|  2 | bin             |     1 |     1 |
|  3 | daemon          |     2 |     2 |
| 13 | nobody          |    99 |    99 |
| 14 | systemd-network |   192 |   192 |
| 15 | dbus            |    81 |    81 |
| 17 | sshd            |    74 |    74 |
| 18 | postfix         |    89 |    89 |
| 20 | rpc             |    32 |    32 |
| 21 | rpcuser         |    29 |    29 |
| 22 | nfsnobody       | 65534 | 65534 |
| 23 | haproxy         |   188 |   188 |
| 24 | plj             |  1000 |  1000 |
| 25 | apache          |    48 |    48 |
| 26 | mysql           |    27 |    27 |
+----+-----------------+-------+-------+
15 rows in set (0.00 sec)

# 查看uid号和gid号不一样的行 仅显示行号、用户名、uid、gid  四个表头的值
mysql> select id,name,uid,gid from user where uid != gid;
+----+----------+------+------+
| id | name     | uid  | gid  |
+----+----------+------+------+
|  4 | adm      |    3 |    4 |
|  5 | lp       |    4 |    7 |
|  6 | sync     |    5 |    0 |
|  7 | shutdown |    6 |    0 |
|  8 | halt     |    7 |    0 |
|  9 | mail     |    8 |   12 |
| 10 | operator |   11 |    0 |
| 11 | games    |   12 |  100 |
| 12 | ftp      |   14 |   50 |
| 16 | polkitd  |  999 |  998 |
| 19 | chrony   |  998 |  996 |
+----+----------+------+------+
11 rows in set (0.00 sec)

范围匹配

匹配范围内的任意一个值即可

|-------------------|------------|
| 比较符号 | 说明 |
| in(值列表) | 在...里 |
| not in(值列表) | 不在...里 |
| between 数字 and 数字 | 在...和...之间 |

# uid号表头的值 是 (1 , 3 , 5 , 7) 中的任意一个即可
mysql> select name,uid from user where uid in (1,3,5,7);
+------+------+
| name | uid  |
+------+------+
| bin  |    1 |
| adm  |    3 |
| sync |    5 |
| halt |    7 |
+------+------+
4 rows in set (0.00 sec)

# shell 表头的的值 不是 "/bin/bash"或"/sbin/nologin" 即可
mysql> select name,shell from user where shell not in ("/bin/bash","/sbin/nologin")
    -> ;
+----------+----------------+
| name     | shell          |
+----------+----------------+
| sync     | /bin/sync      |
| shutdown | /sbin/shutdown |
| halt     | /sbin/halt     |
| mysql    | /bin/false     |
+----------+----------------+
4 rows in set (0.00 sec)

# id表头的值 在 10  到  20 之间即可 包括 10 和  20  本身
mysql> select id,name,uid from user where id between 10 and 20;
+----+-----------------+------+
| id | name            | uid  |
+----+-----------------+------+
| 10 | operator        |   11 |
| 11 | games           |   12 |
| 12 | ftp             |   14 |
| 13 | nobody          |   99 |
| 14 | systemd-network |  192 |
| 15 | dbus            |   81 |
| 16 | polkitd         |  999 |
| 17 | sshd            |   74 |
| 18 | postfix         |   89 |
| 19 | chrony          |  998 |
| 20 | rpc             |   32 |
+----+-----------------+------+
11 rows in set (0.00 sec)

模糊匹配

用法

where 字段名 like "通配符";

_ 表示1个字符

% 表示0到多个字符

# 找名字必须是3个字符的(没有空格挨着敲)
mysql> select name from user where name like "___";
+------+
| name |
+------+
| bin  |
| adm  |
| ftp  |
| rpc  |
| plj  |
| bob  |
+------+
6 rows in set (0.00 sec)

# 找名字必须是4个字符的(没有空格挨着敲)
mysql> select name from user where name like "____";
+------+
| name |
+------+
| root |
| sync |
| halt |
| mail |
| dbus |
| sshd |
+------+
6 rows in set (0.00 sec)

# 找名字以字母a开头的(没有空格挨着敲)
mysql> select name from user where name like "a%"
    -> ;
+--------+
| name   |
+--------+
| adm    |
| apache |
+--------+
2 rows in set (0.00 sec)

# 查找名字至少是4个字符的表达式
mysql> select name from user where name like "%____%";
mysql> select name from user where name like "__%__";
mysql> select name from user where name like "____%";
mysql> select name from user where name like "%____";

正则匹配

用法:

where 字段名 regexp "正则表达式";

元字符:

^ 行首

$ 行尾

. 1个字符

[ ] 范围内

* 前边表达式出现零次或多次

| 或

# 插入数据
mysql> insert into user(name) values("yaya");
mysql> insert into user(name) values("yaya1");
mysql> insert into user(name) values("6yaya");

# 查看名字里有数字的
mysql> select name from user where name regexp "[0-9]";
+-------+
| name  |
+-------+
| yaya1 |
| 6yaya |
+-------+
2 rows in set (0.00 sec)

# 查看名字以数字开头
mysql> select name from user where name regexp "^[0-9]";
+-------+
| name  |
+-------+
| 6yaya |
+-------+
1 row in set (0.00 sec)

# 查看名字以数字结尾
mysql> select name from user where name regexp "[0-9]$";
+-------+
| name  |
+-------+
| yaya1 |
+-------+
1 row in set (0.00 sec)

# 查看名字以r开头
mysql> select name from user where name regexp "^r";
+---------+
| name    |
+---------+
| root    |
| rpc     |
| rpcuser |
+---------+
3 rows in set (0.00 sec)

# 查看名字以t结尾
mysql> select name from user where name regexp "t$";
+------+
| name |
+------+
| root |
| halt |
+------+
2 rows in set (0.00 sec)

# 查看名字以r开头或t结尾
mysql> select name from user where name regexp "^r|t$";
+---------+
| name    |
+---------+
| root    |
| halt    |
| rpc     |
| rpcuser |
+---------+
4 rows in set (0.00 sec)

# 名字r开头t结尾
mysql> select name from user where name regexp "^r.*t$";
+------+
| name |
+------+
| root |
+------+
1 row in set (0.00 sec)

别名/去重/合并

给查看的列定义新的名字

多行数据相同时仅显示一遍

逻辑匹配

有多个筛选条件

多个筛选条件 必须同时成立 逻辑与 and &&

多个筛选条件 某个条件成立即可 逻辑或 or ||

逻辑非 取反 not !

# 逻辑非例子,查看解释器不是/bin/bash 的
mysql> select name,shell from user where shell != "/bin/bash";
# not 也是取反  要放在表达式的前边
mysql> select name,shell from user where not shell="/bin/bash";
# id值不在 10 到 20 之间 
mysql> select id,name from user where not id between 10 and 20;

# 逻辑与 例子
mysql> select name,uid from user where name="root" and uid=1;
mysql> select name,uid from user where name="root" and uid=0;
+------+------+
| name | uid  |
+------+------+
| root |    0 |
+------+------+
1 row in set (0.00 sec)

# 逻辑或 例子
mysql> select name,uid from user where name="root" or name="bin" or uid=1;
+------+------+
| name | uid  |
+------+------+
| root |    0 |
| bin  |    1 |
+------+------+
2 rows in set (0.00 sec)

提高优先级 () 多个判断条件时使用and的优先级高于or

mysql> select 2+3*5;        # 使用默认计算顺序 先乘除后加减
+-------+
| 2+3*5 |
+-------+
|    17 |
+-------+
1 row in set (0.00 sec)

mysql> select (2+3)*5;      # 先加法再乘法
+---------+
| (2+3)*5 |
+---------+
|      25 |
+---------+
1 row in set (0.00 sec)

逻辑匹配什么时候需要加()
逻辑与and 优先级高于逻辑或 or
如果在筛选条件里既有and 又有 or 默认先判断and 再判断or
# 没加() 的查询结果
mysql> select name,uid from user
    -> where name="root" or name="bin" and uid=1;
+------+------+
| name | uid  |
+------+------+
| root |    0 |
| bin  |    1 |
+------+------+
2 rows in set (0.00 sec)

# 加()的查询结果
mysql> select name,uid from user where (name="root" or name="bin") and uid=1;
+------+------+
| name | uid  |
+------+------+
| bin  |    1 |
+------+------+
1 row in set (0.00 sec)

字符比较

= 相等比较 != 不相等比较

# 查看表里是否有名字叫apache的用户
mysql> select name from user where name="apache";
+--------+
| name   |
+--------+
| apache |
+--------+
1 row in set (0.00 sec)

# 输出解释器不是/bin/bash的用户名 及使用的解释器
mysql> select name,shell from user where shell != "/bin/bash";
+-----------------+----------------+
| name            | shell          |
+-----------------+----------------+
| bin             | /sbin/nologin  |
| daemon          | /sbin/nologin  |
| adm             | /sbin/nologin  |
| lp              | /sbin/nologin  |
| sync            | /bin/sync      |
| shutdown        | /sbin/shutdown |
| halt            | /sbin/halt     |
| mail            | /sbin/nologin  |
| operator        | /sbin/nologin  |
| games           | /sbin/nologin  |
| ftp             | /sbin/nologin  |
| nobody          | /sbin/nologin  |
| systemd-network | /sbin/nologin  |
| dbus            | /sbin/nologin  |
| polkitd         | /sbin/nologin  |
| sshd            | /sbin/nologin  |
| postfix         | /sbin/nologin  |
| chrony          | /sbin/nologin  |
| rpc             | /sbin/nologin  |
| rpcuser         | /sbin/nologin  |
| nfsnobody       | /sbin/nologin  |
| haproxy         | /sbin/nologin  |
| apache          | /sbin/nologin  |
| mysql           | /bin/false     |
+-----------------+----------------+
24 rows in set (0.00 sec)

空 表头下没有数据 使用 is null

非空 表头下有数据 使用 is not null

mysql服务 使用关键字null或NULL表示表头没有数据

# 添加新行 仅给行中的id 表头和name表头赋值
mysql> insert into user(id,name) values(71,"");        # 零个字符
mysql> insert into user(id,name) values(72,"null");    # 普通字母
mysql> insert into user(id,name) values(73,NULL);      # 表示空
mysql> insert into user(id,name) values(74,null);      # 表示空

# 查看id表头值大于等于71  的行 仅显示行中 id表头 和  name 表头的值
mysql> select id,name from user where id>=71;
+----+------+
| id | name |
+----+------+
| 71 |      |
| 72 | null |
| 73 | NULL |
| 74 | NULL |
+----+------+
4 rows in set (0.00 sec)

# 查看name 表头没有数据的行 仅显示行中id表头 和  naeme 表头的值
mysql> select id,name from user where name is null;
+----+------+
| id | name |
+----+------+
| 73 | NULL |
| 74 | NULL |
+----+------+
2 rows in set (0.00 sec)

# 查看name 表头是0个字符的行, 仅显示行中id表头 和  naeme 表头的值
mysql> select id,name from user where name="";
+----+------+
| id | name |
+----+------+
| 71 |      |
+----+------+
1 row in set (0.00 sec)

# 查看name 表头值是null的行, 仅显示行中id表头 和  naeme 表头的值
mysql> select id,name from user where name="null";
+----+------+
| id | name |
+----+------+
| 72 | null |
+----+------+
1 row in set (0.01 sec)

# 查看name 表头有数据的行, 仅显示行中id表头 和  name 表头的值
mysql> select id,name from user where name is not null;
相关推荐
喜欢猪猪14 小时前
Java技术专家视角解读:SQL优化与批处理在大数据处理中的应用及原理
android·python·adb
zhangphil15 小时前
Android adb查看某个进程的总线程数
android·adb
s_daqing20 小时前
华为手机建议使用adb卸载的app
adb·华为·智能手机
是程序喵呀2 天前
MySQL备份
android·mysql·adb
暗碳2 天前
adb无线连接手机后scrcpy连接报错ERROR: Could not find any ADB device
adb·智能手机
咸芝麻鱼3 天前
Android Studio | 连接手机设备后,启动App时出现:Waiting For DebuggerApplication (App名)...
android·adb·智能手机·android studio
Future_yzx4 天前
Mybatis中使用MySql触发器报错:You have an error in your SQL syntax; ‘DELIMITER $$
adb
牵牛老人5 天前
Qt调用adb对嵌入式设备的配置文件进行修改,写入多行内容
数据库·qt·adb
LuckyTHP5 天前
蓝叠模拟器adb连接并配置网络代理
网络·adb
Epiphanywh6 天前
Ubuntu 20.04 卸载和安装 MySQL8.0
linux·ubuntu·adb