mysql简介
部署环境实验步骤
1、Mysql 下载地址:https://downloads.mysql.com/archives/community/
下载安装包:https://downloads.mysql.com/archives/get/p/23/file/mysql-5.6.20.tar.gz
[root@localhost ~]# wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.6.20.tar.gz--2021-04-07 09:48:21-- https://downloads.mysql.com/archives/get/p/23/file/mysql-5.6.20.tar.gzResolving downloads.mysql.com (downloads.mysql.com)... 137.254.60.14Connecting to downloads.mysql.com (downloads.mysql.com)|137.254.60.14|:443... connected.HTTP request sent, awaiting response... 302 FoundLocation: https://cdn.mysql.com/archives/mysql-5.6/mysql-5.6.20.tar.gz [following]--2021-04-07 09:48:23-- https://cdn.mysql.com/archives/mysql-5.6/mysql-5.6.20.tar.gzResolving cdn.mysql.com (cdn.mysql.com)... 184.31.28.242Connecting to cdn.mysql.com (cdn.mysql.com)|184.31.28.242|:443... connected.HTTP request sent, awaiting response... 200 OKLength: 32979820 (31M) [application/x-tar-gz]Saving to: ‘mysql-5.6.20.tar.gz’100%[=========================================>] 32,979,820 9.70MB/s in 3.2s 2021-04-07 09:48:26 (9.70 MB/s) - ‘mysql-5.6.20.tar.gz’ saved [32979820/32979820][root@localhost ~]#
2、解压安装包
[root@localhost ~]# tar xf mysql-5.6.20.tar.gz[root@localhost ~]# lsanaconda-ks.cfg mysql-5.6.20 mysql-5.6.20.tar.gz perl5 yum_back[root@localhost ~]#
3、安装依赖工具(gcc c ncurses ncurses-devel cmake libaio bison gcc-c++ git)
yum 安装[root@localhost ~]# yum -y install gcc c ncurses ncurses-devel cmake libaio bison gcc-c++ git
Cmake工具和configure工具,configure二进制程序用来生成Makefile文件,Makefile记录软件需要的环境和要编译的参数
[root@localhost ~]# cd mysql-5.6.20[root@localhost mysql-5.6.20]# lsBUILD dbug libmysqld regex unittestBUILD-CMAKE Docs libservices scripts VERSIONclient Doxyfile-perfschema man sql viocmake extra mysql-test sql-bench winCMakeLists.txt include mysys sql-common zlibcmd-line-utils INSTALL-SOURCE mysys_ssl storageconfig.h.cmake INSTALL-WIN-SOURCE packaging stringsconfigure.cmake libevent plugin support-filesCOPYING libmysql README tests[root@localhost mysql-5.6.20]# cd[root@localhost ~]# [root@localhost ~]# cd mysql-5.6.20[root@localhost mysql-5.6.20]# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql55/ \> -DMYSQL_UNIX_ADDR=/tmp/mysql.sock \> -DMYSQL_DATADIR=/data/mysql \> -DSYSCONFDIR=/etc \> -DMYSQL_USER=mysql \> -DMYSQL_TCP_PORT=3306 \> -DWITH_XTRADB_STORAGE_ENGINE=1 \> -DWITH_INNOBASE_STORAGE_ENGINE=1 \> -DWITH_PARTITION_STORAGE_ENGINE=1 \all \-DWITH_BIG_TABLES=1 \-DWITH_DEBUG=0> -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \> -DWITH_MYISAM_STORAGE_ENGINE=1 \> -DWITH_READLINE=1 \> -DENABLED_LOCAL_INFILE=1 \> -DWITH_EXTRA_CHARSETS=1 \> -DDEFAULT_CHARSET=utf8 \> -DDEFAULT_COLLATION=utf8_general_ci \> -DEXTRA_CHARSETS=all \> -DWITH_BIG_TABLES=1 \> -DWITH_DEBUG=0
5、make 编译
make -j4[root@localhost mysql-5.6.20]# make -j4
6、make install
make install安装[root@localhost mysql-5.6.20]# make install -j4
7、设置配置文件
创建配置文件[root@localhost mysql-5.6.20]# cd /usr/local/mysql55/[root@localhost mysql55]# ll support-files/total 32-rwxr-xr-x 1 root root 1153 Apr 7 20:08 binary-configure-rw-r--r-- 1 root root 773 Jul 18 2014 magic-rw-r--r-- 1 root root 1126 Apr 7 20:08 my-default.cnf-rwxr-xr-x 1 root root 1061 Apr 7 20:08 mysqld_multi.server-rwxr-xr-x 1 root root 880 Apr 7 20:08 mysql-log-rotate-rwxr-xr-x 1 root root 10880 Apr 7 20:08 mysql.server[root@localhost mysql55]# \cp -f support-files/my-default.cnf /etc/my.cnf[root@localhost mysql55]# \cp -f support-files/mysql.server /etc/init.d/mysqld
8、设置服务启动
测试[root@localhost mysql55]# chkconfig --add mysqld[root@localhost mysql55]# chkconfig --level 35 mysqld on
9、创建用户、目录,并修改权限
/data/mysql数据库数据存放位置创建mysql用户修改权限[root@localhost mysql55]# mkdir -p /data/mysql[root@localhost mysql55]# useradd -M -s /sbin/nologin mysql[root@localhost mysql55]# chown -R mysql.mysql /data/mysql/[root@localhost mysql55]# /usr/local/mysql55/scripts/mysql_install_db --user=mysql --datadir=/data/mysql/ --basedir=/usr/local/mysql55/FATAL ERROR: please install the following Perl modules before executing /usr/local/mysql55/scripts/mysql_install_db: Data::Dumper这里报错,根据提示,安装perl*,然后再次初始化[root@localhost ~]# yum -y install perl*[root@localhost mysql55]# /usr/local/mysql55/scripts/mysql_install_db --user=mysql --datadir=/data/mysql/ --basedir=/usr/local/mysql55/......[root@localhost mysql55]# ln -s /usr/local/mysql55/bin/* /usr/bin/ 将mysql bin下面的执行程序连接到/usr/bin
10、启动、测试
service mysqld start/etc/init.d/mysqld stopsystemctl start mysqld[root@localhost ~]# service mysqld startStarting MySQL.. SUCCESS! [root@localhost ~]#
MYSQL数据库配置文件详解常见的配置文件参数
[mysqld] 服务器端配置 datadir=/data/mysql 数据目录 socket=/var/lib/mysql/mysql.sock socket通信设置 user=mysql 使用mysql用户启动 symbolic-links=0 是否支持快捷方式 log-bin=mysql-bin 开启bin-log日志 server-id = 1 mysql服务ID auto_increment_offset=1 auto_increment_increment=2 [mysqld_safe] mysql服务安全启动配置 log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid key_buffer_size 指定索引缓冲区的大小,它决定索引处理的速度,尤其是索引读的速度。一般为内存的50%show variables like ‘key_buffer_size‘;max_connections = 3000每个客户端连接最大的错误允许数量,如果达到了此限制,这个客户端将会被MySQL服务阻止直到执行了”FLUSH HOSTS”或者服务重启.innodb_buffer_pool_size对于InnoDB表来说,innodb_buffer_pool_size的作用就相当于key_buffer_size对于MyISAM表的作用一样。InnoDB使用该参数指定大小的内存来缓冲数据和索引。
对于单独的MySQL数据库服务器,最大可以把该值设置成物理内存的80%。根据MySQL手册,对于2G内存的机器,推荐值是1G(50%)。basedir = path # 使用给定目录作为根目录(安装目录)。datadir = path # 从给定目录读取数据库文件。pid-file = filename # 为mysqld程序指定一个存放进程ID的文件(仅适用于UNIX/Linux系统); [mysqld] socket = /tmp/mysql.sock # 为MySQL客户程序与服务器之间的本地通信指定一个套接字文件(Linux下默认是/var/lib/mysql/mysql.sock文件)port = 3306 # 指定MsSQL侦听的端口 key_buffer = 384M # key_buffer是用于索引块的缓冲区大小,增加它可得到更好处理的索引(对所有读和多重写)。索引块是缓冲的并且被所有的线程共享,key_buffer的大小视内存大小而定。table_cache = 512 # 为所有线程打开表的数量。增加该值能增加mysqld要求的文件描述符的数量。可以避免频繁的打开数据表产生的开销sort_buffer_size = 2M # 每个需要进行排序的线程分配该大小的一个缓冲区。增加这值加速ORDER BY或GROUP BY操作。注意:该参数对应的分配内存是每连接独占!如果有100个连接,那么实际分配的总共排序缓冲区大小为100×6=600MBread_buffer_size = 2M # 读查询操作所能使用的缓冲区大小。和sort_buffer_size一样,该参数对应的分配内存也是每连接独享。query_cache_size = 32M # 指定MySQL查询结果缓冲区的大小read_rnd_buffer_size = 8M # 改参数在使用行指针排序之后,随机读用的。myisam_sort_buffer_size = 64M # MyISAM表发生变化时重新排序所需的缓冲thread_concurrency = 8 # 最大并发线程数,取值为服务器逻辑CPU数量×2,如果CPU支持H.T超线程,再×2thread_cache = 8 #缓存可重用的线程数skip-locking # 避免MySQL的外部锁定,减少出错几率增强稳定性。 [mysqldump]max_allowed_packet =16M # 服务器和客户端之间最大能发送的可能信息包
MYSQL 密码管理
MYSQL数据库在使用过程中为了加强安全防范,需要设置密码访问,如何设置密码,及密码忘记如何破解,如下设置密码授权,密码修改及破解的方法。
MYSQL 创建用户授权权限数据库名.* 数据库中的所有数据库名.表 指定数据库中的某张表数据库名.存储过程 指定数据库中的存储过程*.* 所有数据库1234授权localhost主机通过huang用户和admin123密码访问本地的ISP库的所有权限;mysql> grant all on ISP.* to huang@localhost identified by 'admin123';Query OK, 0 rows affected (0.21 sec)12授权所有主机通过hun 用户和123密码访问本地ISP库的查询、插入、更新、删除权限mysql> grant select,insert,update,delete on *.* to hun@"%" identified by '123';Query OK, 0 rows affected (0.00 sec)12授权192.168.10.10主机通过huang用户和admin123密码访问本地的ISP库的所有权限;mysql> grant all on ISP.* to huang@'192.168.10.10' identified by 'admin123';Query OK, 0 rows affected (0.00 sec)
MYSQL 密码破解方法在配置文件[mysqld]模块中添加skip-grant-tables
[root@localhost ~]# /etc/init.d/mysqld stop 1、停止mysql服务Shutting down MySQL. SUCCESS! [root@localhost ~]# [root@localhost ~]# vim /etc/my.cnf 2、修改配置文件[root@localhost ~]# cat /etc/my.cnf|grep skip-grant*skip-grant-tables[root@localhost ~]# /etc/init.d/mysqld restart 3、重启mysql 服务, ERROR! MySQL server PID file could not be found!Starting MySQL.. SUCCESS! [root@localhost ~]# mysql 4、没有密码进入mysqlmysql> use mysql; 使用mysql数据库Database changedmysql> mysql> update user set password = Password('hebao') where user = 'root'; 5、修改密码mysql> flush privileges; 6、刷新权限mysql> quit;
总结MYSQL 用户操作连接数据库
mysql -u user -p 例:mysql -u root -p常见错误如下:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2), it means that the MySQL server daemon (Unix) or service (Windows) is not running.退出连接:QUIT 或者 Ctrl+D
查看、创建、使用数据库,表
mysql> show databases;+--------------------+| Database |+--------------------+| information_schema || mysql || performance_schema || test |+--------------------+4 rows in set (0.00 sec)mysql> create database S default charset utf8 collate utf8_general_ci;mysql> use S;Database changedmysql> show tables;Empty set (0.00 sec)
用户操作创建用户
创建用户 create user '用户名'@'IP地址' identified by '密码'; 删除用户 drop 电脑 user '用户名'@'IP地址'; 修改用户 rename user '用户名'@'IP地址' to '新用户名'@'IP地址'; 修改密码 set password for '用户名'@'IP地址' = Password('新密码'); 注:用户权限相关数据保存在mysql数据库的user表中,所以也可以直接对其进行操作(不建议) mysql> create user 'hbs'@'192.168.10.10' identified by '123'; Query OK, 0 rows affected (0.00 sec) mysql> drop user 'hbs'@'192.168.10.10'; Query OK, 0 rows affected (0.00 sec) mysql> rename user 'hbs'@'192.168.10.10' to 'liuaoni'@'192.168.10.13'; Query OK, 0 rows affected (0.00 sec) mysql> mysql> set password for 'liuaoni'@'192.168.10.13'=Password('!23'); Query OK, 0 rows affected (0.00 sec) mysql>
MYSQL 表操作查看表
show tables; 查看数据库全部表select * from 表名; 查看表所有内容
创建表
create 电脑 table 表名( 列名 类型 是否可以为空, 列名 类型 是否可以为空)ENGINE=InnoDB DEFAULT CHARSET=utf8来一个实例好详解CREATE TABLE `tab1` ( `nid` int(11) NOT NULL auto_increment, `name` varchar(255) DEFAULT test, `email` varchar(255), PRIMARY KEY (`nid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;注:默认值,创建列时可以指定默认值,当插入数据时如果未主动设置,则自动添加默认值自增,如果为某列设置自增列,插入数据时无需设置此列,默认将自增(表中只能有一个自增列)注意:1、对于自增列,必须是索引(含主键)2、对于自增可以设置步长和起始值主键,一种特殊的唯一索引,不允许有空值,如果主键使用单个列,则它的值必须唯一,如果是多列,则其组合必须唯一。
删除表
drop table 表名
清空表内容
delete from 表名truncate table 表名
修改表内容
添加列: alter table 表名 add 列名 类型删除列: alter table 表名 drop column 列名修改列:alter table 表名 modify column 列名 类型; -- 类型alter table 表名 change 原列名 新列名 类型; -- 列名,类型添加主键:alter table 表名 add primary key(列名);删除主键:alter table 表名 drop primary key;alter table 表名 modify 列名 int, drop primary key;添加外键: alter table 电脑 从表 add constraint 外键名称(形如:FK_从表_主表) foreign key 从表(外键字段) references 主表(主键字段);删除外键: alter table 表名 drop foreign key 外键名称修改默认值:ALTER TABLE testalter_tbl ALTER i SET DEFAULT 1000;删除默认值:ALTER TABLE testalter_tbl ALTER i DROP DEFAULT;
数据库表内容的操作(增删改查)增
nsert into 表 (列名,列名...) values (值,值,...)insert into 表 (列名,列名...) values (值,值,...),(值,值,值...)insert into 表 (列名,列名...) select (列名,列名...) from 表例: insert into tab1(name,email) values('test','test8851@163.com')
删
delete from 表 # 删除表里全部数据delete from 表 where id=1 and name='test' # 删除ID =1 和name='test' 那一行数据
改
update 表 set name = 'test' where id>1
查
select * from 表select * from 表 where id > 1select nid,name,gender as gg from 表 where id > 1查这块的条件太多太多我给列举出来至于组合还得看大家的理解程度哈a、条件判断whereselect * from 表 where id > 1 and name != 'aylin' and num = 12;select * from 表 where id between 5 and 16;select * from 表 where id in (11,22,33)select * from 表 where id not in (11,22,33)select * from 表 where id in (select nid from 表)b、通配符likeselect * from 表 where name like 'zhang%' # zhang开头的所有(多个字符串)select * from 表 where name like 'zhang_' # zhang开头的所有(一个字符)c、限制limitselect * from 表 limit 5; - 前5行select * from 表 limit 4,5; - 从第4行开始的5行select * from 表 limit 5 offset 4 - 从第4行开始的5行d、排序asc,descselect * from 表 order by 列 asc - 根据 “列” 从小到大排列select * from 表 order by 列 desc - 根据 “列” 从大到小排列select * from 表 order by 列1 desc,列2 asc - 根据 “列1” 从大到小排列,如果相同则按列2从小到大排序e、分组group byselect num from 表 group by numselect num,nid from 表 group by num,nidselect num,nid from 表 where nid > 10 group by num,nid order nid descselect num,nid,count(*),sum(score),max(score),min(score) from 表 group by num,nidselect num from 表 group by num having max(id) > 10特别的:group by 必须在where之后,order by之前
如果感觉小编写得不错,请素质三连:点赞+转发+关注。我会努力写出更好的作品分享给大家。更多JAVA进阶学习资料小编已打包好,可以关注私信找我领取哦!
原文 //blog.csdn.net/weixin_42313749/article/details/115556729
电脑