博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL测试
阅读量:6418 次
发布时间:2019-06-23

本文共 7312 字,大约阅读时间需要 24 分钟。

MySQL 数据库系统

MySQL 特点:

多进程
多用户
高性能
高可靠
易用性

MySQL AB --> SUN --> Oracle

MySQL --> MariaDB

关系型数据库 RDBMS:

商业:Oracle,Sybase,Infomix,SQL Server,DB2
开源:MySQL,PostgreSQL,pgsql,EnterpriseDB

非关系型数据库 NoSQL:

MongoDB,Redis,HBase,memcached

MySQL:

Community Edtion 社区版
Enterprise Edtion 企业版

软件包格式:

.rpm
.exe
.bin(二进制)
源程序

RPM 包安装方法:

yum -y install mysql-server mysql
service mysqld start
netstat -ntpl |grep :3306

MySQL源码安装+LVM 逻辑卷

创建逻辑卷 /dev/mysqlvg/mysqllv

创建一个分区,将类型改为8e并保存退出

[root@RHEL6-Server1 ~]# fdisk -l /dev/sdb

Device Boot Start End Blocks Id System
/dev/sdb1 1 10443 83883366 8e Linux LVM

[root@RHEL6-Server1 ~]# partprobe /dev/sdb

[root@RHEL6-Server1 ~]# pvcreate /dev/sdb1
[root@RHEL6-Server1 ~]# vgcreate mysqlvg /dev/sdb1
[root@RHEL6-Server1 ~]# lvcreate -L 60G -n mysqllv mysqlvg
[root@RHEL6-Server1 ~]# mkfs.ext4 /dev/mysqlvg/mysqllv
[root@RHEL6-Server1 ~]# mkdir /usr/local/mysql/data -p
[root@RHEL6-Server1 ~]# mount /dev/mysqlvg/mysqllv /usr/local/mysql/data

配置自动挂载

[root@RHEL6-Server1 ~]# vim /etc/fstab
/dev/mysqlvg/mysqllv /usr/local/mysql/data ext4 defaults 0 0
[root@RHEL6-Server1 ~]# mount -a

===============================================================================================================

1)安装Mysql数据库

[root@RHEL6-Server1 ~]# rpm -e mysql-server mysql
[root@RHEL6-Server1 ~]# yum -y install ncurses-devel

安装配置工具cmake

[root@RHEL6-Server1 ~]# tar xf cmake-2.8.12.tar.gz -C /usr/src/
[root@RHEL6-Server1 ~]# cd /usr/src/cmake-2.8.12/
[root@RHEL6-Server1 cmake-2.8.12]# ./configure && gmake && gmake install

[root@RHEL6-Server1 ~]# groupadd mysql

[root@RHEL6-Server1 ~]# useradd -M -s /sbin/nologin -g mysql mysql
[root@RHEL6-Server1 ~]# tar xf mysql-5.7.2-m12.tar.gz -C /usr/src/
[root@RHEL6-Server1 ~]# cd /usr/src/mysql-5.7.2-m12/
[root@RHEL6-Server1 mysql-5.7.2-m12]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all -DSYSCONFDIR=/etc && make && make install

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql //主程序安装目录

-DDEFAULT_CHARSET=utf8 //默认字符集为 utf8
-DDEFAULT_COLLATION=utf8_general_ci //默认的字符集校对规则
-DWITH_EXTRA_CHARSETS=all //安装所有字符集
-DSYSCONFDIR=/etc //配置文件存放目录

[root@RHEL6-Server1 mysql-5.7.2-m12]# make && make install

2)优化调整

[root@RHEL6-Server1 mysql-5.7.2-m12]# cp support-files/my-default.cnf /etc/my.cnf
[root@RHEL6-Server1 mysql-5.7.2-m12]# cp support-files/mysql.server /etc/init.d/mysqld
[root@RHEL6-Server1 mysql-5.7.2-m12]# chmod +x /etc/init.d/mysqld
[root@RHEL6-Server1 mysql-5.7.2-m12]# chkconfig --add mysqld
[root@RHEL6-Server1 mysql-5.7.2-m12]# chkconfig --list mysqld
mysqld 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭

[root@RHEL6-Server1 mysql-5.7.2-m12]# echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile

[root@RHEL6-Server1 mysql-5.7.2-m12]# . /etc/profile = source /etc/profile
3)初始化数据库
[root@RHEL6-Server1 mysql-5.7.2-m12]# chown -R mysql:mysql /usr/local/mysql/
[root@RHEL6-Server1 mysql-5.7.2-m12]# /usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data --user=mysql

--basedir=/usr/local/mysql/ //指定安装目录(产品目录)

--datadir=/usr/local/mysql/data //指定数据目录
--user=mysql //指定用户身份

4)启动mysql服务

[root@RHEL6-Server1 mysql-5.7.2-m12]# service mysqld start
Starting MySQL.............. [确定]
[root@RHEL6-Server1 mysql-5.7.2-m12]# mysqladmin -u root password '123456' //设置成自己的密码
[root@RHEL6-Server1 mysql-5.7.2-m12]# mysql -u root -p123456

my.cnf 配置文件相关介绍,在mysql解压路径support-files/下提供的模版

my-huge.cnf 巨大数据量

my-innodb-heavy-4G.cnf innodb引擎
my-large.cnf 大数据量
my-medium.cnf 测试使用
my-small.cnf 小数据量

MySQL 数据库存储引擎:

myisam
innodb

多个配置文件时的应用顺序,后一个覆盖前一个配置文件

/etc/my.cnf --> /etc/mysql/my.cnf --> $BASEDIR/my.cnf --> ~/.my.cnf

netstat -anpt |grep mysqld

tcp 3306 端口

MySQL 是C/S结构,连接时需要客户端工具,Linux下mysql(如果是通过rpm格式安装软件需要安装mysql 软件包)

连接并登录到MySQL操作环境

mysql -u 指定用户名
-p 指定密码
-h 指定主机
-P 指定端口

[root@RHEL6-Server1 ~]# mysql -u root 默认root为Mysql用户,并为空密码

设置数据库用户的密码

mysqladmin -u root password '123456'

查看有那些数据库

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema | 保证兼容性,mysql运行当中位于内存中的信息,关机后是空的
| mysql | 最主要的
| test | 用于测试

查看数据库中的数据表信息

mysql> USE mysql; //切换数据库
mysql> show tables; //查看有哪些表

显示数据表的结构(字段)

DESCRIBE [数据库名.]表名
mysql> DESCRIBE user;
mysql> DESCRIBE mysql.user;

创建新的数据库

CREATE DATABASE 数据库名
mysql> CREATE DATABASE auth;

创建新的数据表

CREATE TABLE 表名 (字段定义……)
mysql> USE auth;
mysql> CREATE TABLE users (user_name CHAR(16) NOT NULL, user_passwd CHAR(48) DEFAULT '', PRIMARY KEY (user_name));

删除指定的数据表

DROP TABLE [数据库名.]表名
mysql> DROP TABLE auth.users;

删除指定的数据库

DROP DATABASE 数据库名
mysql> DROP DATABASE auth;

向数据表中插入新的数据记录

INSERT INTO 表名(字段1, 字段2, ……) VALUES(字段1的值, 字段2的值, ……)
mysql> use auth;
mysql> INSERT INTO users(user_name,user_passwd) VALUES('zhangsan', PASSWORD('123456'));
mysql> INSERT INTO users VALUES('lisi', PASSWORD('654321'));
mysql> select * from auth.users;

从数据表中查找符合条件的数据记录

SELECT 字段名1,字段名2 …… FROM 表名 WHERE 条件表达式
mysql> SELECT user_name,user_passwd FROM auth.users where user_name= 'zhangsan';

修改、更新数据表中的数据记录

UPDATE 表名 SET 字段名1=值1[,字段名2=值2] WHERE 条件表达式
mysql> UPDATE auth.users SET user_passwd=PASSWORD('') WHERE user_name='lisi';
mysql> select * from auth.users;

mysql> UPDATE mysql.user SET password=PASSWORD('123456') WHERE user='root';

mysql> FLUSH PRIVILEGES; 刷新授权表,让mysql进程重读授权表

在数据表中删除指定的数据记录

DELETE FROM 表名 WHERE 条件表达式
mysql> SELECT user,host,password FROM mysql.user WHERE user='';
mysql> DELETE FROM mysql.user WHERE user='';
mysql> DELETE FROM auth.users WHERE user_name='lisi';
mysql> SELECT * FROM auth.users;

设置用户权限(用户不存在时,则新建用户)

GRANT 权限列表 ON 数据库名.表名 TO 用户名@来源地址 [ IDENTIFIED BY ‘密码’ ]
mysql> grant all on . to 'root'@'192.168.6.131' IDENTIFIED BY '123456';
mysql> GRANT select ON auth. TO 'xiaoqi'@'localhost' IDENTIFIED BY '123456';
[root@www ~]# mysql -u xiaoqi -p
……
mysql> SELECT
FROM auth.users;
+-----------+-------------------------------------------+
| user_name | user_passwd |
+-----------+-------------------------------------------+
| zhangsan | 6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
+-----------+-------------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT
FROM mysql.user;

查看用户的权限

SHOW GRANTS FOR 用户名@域名或IP
mysql> SHOW GRANTS FOR 'xiaoqi'@'RHEL6-Server1';
mysql> SHOW GRANTS FOR 'dbuser'@'192.168.4.19';

撤销用户的权限

REVOKE 权限列表 ON 数据库名.表名 FROM 用户名@域名或IP
mysql> REVOKE all ON auth.* FROM 'xiaoqi'@'localhost';

数据库的备份与恢复

方法1:可直接备份目录 /var/local/mysql/var
方法2:使用专用备份工具 mysqldump

备份操作

mysqldump -u 用户名 -p [密码] [选项] [数据库名] [表名] > /备份路径/备份文件名
常见选项:
--all-databases
--opt

[root@www ~]# mysqldump -u root -p mysql user > mysql-user.sql

Enter password:
[root@www ~]# mysqldump -u root -p --database auth > auth.sql
Enter password:
[root@www ~]# mysqldump -u root -p --opt --all-databases > all-data.sql
Enter password:

恢复操作

mysql -u root -p [数据库名] < /备份路径/备份文件名
[root@www ~]# mysql -u root -p test < mysql-user.sql
Enter password:

MySQL通配符:

_:任意单个字符
%:任意长度的任意字符

用于显示广泛的服务器状态信息

show status;

显示创建特定数据库或表

help create database;
help create tables;

显示授权用户的安全权限

show grants;

显示服务器错误或警告信息

show errors;
show warnings;

显示当前连接用户

mysql> select user();

显示当前时间

mysql> select now();

显示当前用户及时间

mysql> select CURRENT_USER(),CURRENT_TIMESTAMP;
mysql> select user(),now();

显示当前数据库

mysql> select database();

显示服务器状态

mysql> status;

转载于:https://blog.51cto.com/12687257/2047197

你可能感兴趣的文章
FastDFS蛋疼的集群和负载均衡(十七)之解决LVS+Keepalived遇到的问题
查看>>
深入剖析Redis系列(二) - Redis哨兵模式与高可用集群
查看>>
上班第一天的BUG居然是chrome翻译功能导致的
查看>>
Android 用于校验集合参数的小封装
查看>>
iOS混合开发库(GICXMLLayout)七、JavaScript篇
查看>>
instrument 调试 无法指出问题代码 解决
查看>>
理解缓存
查看>>
im也去中心化?Startalk(星语)的去中心化设计之路
查看>>
SpringBoot 实战 (六) | 用 JdbcTemplates 访问 Mysql
查看>>
BAT 经典算法笔试题 —— 磁盘多路归并排序
查看>>
一次完整的HTTP请求
查看>>
Swift 4 前后 KVO 的变化
查看>>
Nginx限制带宽
查看>>
Linux操作系统下利用SSH进行远程控制
查看>>
All Web Application Attack Techniques
查看>>
归档日志ORA-19809: 超出了恢复文件数的限制
查看>>
精品德国软件 UltraShredder 文件粉碎机
查看>>
PANDAS 数据合并与重塑(join/merge篇)
查看>>
文件时间信息在测试中的应用
查看>>
Exception loading sessions from persistent storage (tomcat异常)
查看>>