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;