MYSQL(安装配置)
介绍
下载和安装
mysql为我们提供开源的安装在各个操作系统上的安装包,包括ios,linux,windows
Windows版本:
下载:
1、打开网址,https://www.mysql.com/,点击downloads之后跳转到https://www.mysql.com/downloads,选择MySQL Community (GPL) Downloads选项
2、点击MySQL Community Server进入https://dev.mysql.com/downloads/mysql/页面,选择操作系统后选择压缩包方式下载,如果选择installer方式,mysql会自动进行初始化和配置环境变量,不需要你自己配置了
3、可以不用登陆或者注册,直接点击No thanks,just start my download就可以下载了。
解压:
如果想要让MySQL安装在指定目录,那么就将解压后的文件夹移动到指定目录,如:C:\mysql-8.0.22-winx64
初始化:
MySQL解压后的 bin 目录下有一大堆的可执行文件,执行如下命令初始化数据:
#cd c:\mysql-8.0.22-winx64\bin #mysqld --initialize-insecure
启动MySQL服务:
执行命令启动MySQL服务
# 进入可执行文件目录 cd c:\mysql-8.0.22-winx64\bin # 启动MySQL服务 mysqld
启动MySQL客户端并连接MySQL服务:
由于初始化时使用的【mysqld --initialize-insecure】命令,其默认未给root账户设置密码
# 进入可执行文件目录 cd c:\mysql-8.0.22-winx64\bin # 连接MySQL服务器 mysql -u root -p # 提示请输入密码,初始密码为空,直接回车就行
输入回车,见下图表示安装成功:
但是,在上述步骤中重复的进入可执行文件目录比较繁琐,如想日后操作简便,可以做如下操作。
a. 添加环境变量
将MySQL可执行bin文件添加到环境变量中,从而执行执行命令即可
【右键计算机】-->【属性】-->【高级系统设置】-->【高级】-->【环境变量】-->【在第二个内容框中找到 变量名为Path 的一行,双击】 --> 【将MySQL的bin目录路径追加到变值值中,用 ;分割】
如:
D:\mysql-8.0.20-winx64\bin;D:\Program Files\nodejs\;D:\Program Files\Appium_1.4.16.1\node_modules\.bin;D:\Program Files\Android\android-sdk\platform-tools;D:\Program Files\Android\android-sdk\tools;D:\Program Files\Nox\bin;
再启动服务并连接时,只需:
# 启动MySQL服务,在终端输入 mysqld # 连接MySQL服务,在终端输入: mysql -u root -p
b. 将MySQL服务制作成windows服务:
# 制作MySQL的Windows服务,在终端执行此命令: "c:\mysql-8.0.22-winx64\bin\mysqld" --install # 移除MySQL的Windows服务,在终端执行此命令: "c:\mysql-8.0.22-winx64\bin\mysqld" --remove
注册成服务之后,以后再启动和关闭MySQL服务时,仅需执行如下命令:
net start mysql # 启动MySQL服务 net stop mysql # 关闭MySQL服务
#在windows操作系统上没有重启mysql服务的命令 #如果要重启服务,只能先stop再start

1.下载完成后解压到目标盘,这里我安装到G盘。G:\work_job\mysql-8.0.12-winx64 2.安装前配置 在MySQL解压目录中新建文件夹data 3.创建一个my.ini文件放在bin目录里面。 配置文件 my.ini 内容如下: [mysql] # 设置mysql客户端默认字符集 default-character-set=utf8 [mysqld] #设置3306端口 port = 3306 # 设置mysql的安装目录 basedir=G:\work_job\mysql-8.0.12-winx64 # 设置mysql数据库的数据的存放目录 datadir=G:\work_job\mysql-8.0.12-winx64\data # 允许最大连接数 max_connections=200 # 服务端使用的字符集默认为8比特编码的latin1字符集 character-set-server=utf8 # 创建新表时将使用的默认存储引擎 default-storage-engine=INNODB 4、开始安装 以管理员身份运行DOS窗口 5、在dos窗口命令操作 1.输入:mysqld --initialize --console 配置环境信息,初始root密码会带出,root@localhost后面的即是。 2.接下来输入: mysqld -install 安装mysql服务。 若提示已存在,则先输入 mysql -remove删除。 3.再次输入:mysqld -install . 安装成功会提示 Service successfully installed. 4.最后输入net start mysql 启动服务即可。net stop mysql停止服务 6、初始登录MySQL库。 初次登录使用初始密码 输入:mysql -u root -p 即上图的root@localhost的内容 登录成功后,修过root密码 alter user 'root'@'localhost' identified with mysql_native_password by '123456'; 7、查看mysql初始自带数据库信息 输入:show databases; 查询默认用户信息,host代表仅本机登录,允许所有IP访问,可以直接改成‘%’ 另外mysql8.0以后的版本,加密方式更改了,如下图。 故创建用户需指定加密方式 create user 'test'@'%' identified with mysql_native_password by '123456'; Host is not allowed to connect to this MySQL server 解决方法: 先说说这个错误,其实就是我们的MySQL不允许远程登录,所以远程登录失败了,解决方法如下: 1、在装有MySQL的机器上登录MySQL:mysql -u root -p密码 2、执行use mysql; 3、执行update user set host = '%' where user = 'root';这一句执行完可能会报错,不用管它。 4、执行FLUSH PRIVILEGES;

MySQL抛出异常:lock wait timeout exceeded解决方案: 我们可以用下面三张表来查原因: innodb_trx 当前运行的所有事务 innodb_locks 当前出现的锁 innodb_lock_waits 锁等待的对应关系 如果数据库中有锁的话,我们可以使用这条语句来查看:select * from information_schema.innodb_trx 记录的id为199120823069, trx_mysql_thread_id 为 738178711, 所以我们执行:kill 738178711杀掉这个MySQL语句的线程即可 // 查询线程 // SELECT * from information_schema.processlist WHERE id = 738178711; // show full processlist; 如果以上方法杀掉线程,但还是不能解决,则我们就可以查找执行线程用时比较久的用户,然后直接干掉 SELECT * from information_schema.`PROCESSLIST` WHERE Time > 1000 AND USER = 'wonguser' ORDER BY TIME desc; kill 740097562 这样把所有耗时比较久的任务干掉,就可以解决这个问题了
Linux版本
环境和资源地址:
*** centos 7 ***
http://repo.mysql.com/yum/mysql-5.6-community/
安装:
安装方式一(在线安装): # 查看和mysql有关的安装包 yum search mysql # 安装mysql社区版本yum源 yum -y install http://repo.mysql.com/yum/mysql-5.6-community/el/7/x86_64/mysql-community-release-el7-5.noarch.rpm # 找到community社区版本的mysql包 yum search mysql |grep community # 使用yum安装下列 yum -y install mysql-community-server.x86_64 mysql-community-client.x86_64 mysql-community-server.x86_64 mysql-community-client.x86_64
安装方式二(离线安装): # 下载离线包 yumdownloader mysql-community-server.x86_64 mysql-community-client.x86_64 mysql-community-libs.x86_64 mysql-community-common.x86_64 # 安装 yum -y install mysql-community-client-5.6.41-2.el7.x86_64.rpm mysql-community-server-5.6.41-2.el7.x86_64.rpm mysql-community-common-5.6.41-2.el7.x86_64.rpm mysql-community-libs-5.6.41-2.el7.x86_64.rpm
操作mysql相关常用shell命令:
# 启停服务 systemctl {start|stop|restart|status} mysqld.service systemctl start mysqld.service # 查看服务状态 systemctl status mysqld.service # 安全初始化 /usr/bin/mysql_secure_installation # 停系统防火墙 systemctl stop firewalld.service # 查看强制访问控制状态 getenforce # 关闭强制访问控制策略 setenforce 0
登陆和初始化密码:
# 创建root远程登陆密码 mysql -h 127.0.0.1 -u root -p mysql> grant all privileges on *.* to root@'%' identified by "root"; mysql> flush privileges;
查询所有Mysql对应的文件夹: # whereis mysql 安装mysql:# yum install -y mysql-server 删除mysql:# rpm -e --nodeps mysql-libs-5.1.73-5.el6_6.x86_64 设置mysql服务开机启动:# systemctl enable mysqld 启动mysql服务:# systemctl start mysqld 查看MySQL服务是否已启动:# systemctl status mysqld 进入mysql进行设置:# mysql -u root -p 开放3306端口,允许使用用户名root密码root-1234从任何主机连接到mysql服务器。 mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root-1234' WITH GRANT OPTION; mysql> FLUSH PRIVILEGES; mysql> quit;
Mac版本:
下载:
1、打开网址,https://www.mysql.com/,点击downloads之后跳转到https://www.mysql.com/downloads,选择MySQL Community (GPL) Downloads选项
2、点击MySQL Community Server进入https://dev.mysql.com/downloads/mysql/页面,选择Mac操作系统后选择压缩包方式下载
3、可以不用登陆或者注册,直接点击No thanks,just start my download就可以下载了。
4、双击下载好的dmg文件,会弹出pkg弹框,再双击pkg图标,进入安装界面
5、在安装界面上一路继续,最后就安装成功了。
环境变量:
第一步 :在终端切换到根目录,编辑./.bash_profile文件
$ cd ~
$ vim ./.bash_profile
第二步 :进入vim 编辑环境。 按下i 进入 insert 模式 ,输入
export PATH=$PATH:/usr/local/mysql/bin
export PATH=$PATH:/usr/local/mysql/support-files
第三步 :按下esc 退出 insert 模式,输入:wq保存配置文件。
:wq
第四步 :在终端界面下输入以下命令,让配置文件的修改生效,并查看环境变量是否设置成功
$ source ~/.bash_profile
$ echo $PATH

停止MySQL服务
sudo mysql.server stop
重启MySQL服务
sudo mysql.server restart
查看MySQL服务状态
sudo mysql.server status
启动:
第一步 :终端界面下输入
sudo mysql.server start
第二步 :启动mysql服务,启动成功后继续输入
mysql -u root -p
第三步 :直接回车进入数据库,看到下列欢迎页面
初始化设置:
设置初始化密码,进入数据库mysql数据库之后执行下面的语句,设置当前root用户的密码为root
set password = password('root');
#退出sql界面 #exit
配置:
进入到 /usr/local/mysql/support-files
目录。里面有个文件:my-default.cnf
将其复制到桌面上,改名为my.cnf,
将内容替换为。
[mysqld] default-storage-engine=INNODB character-set-server=utf8 port = 3306 [client] default-character-set=utf8
将修改后的文件my.cnf
复制到 /etc 目录下。
重启mysql
#检测修改结果 $mysql>>>show variables like '%char%';
至此数据库就可以使用了
初识sql语句

#进入mysql客户端 $mysql mysql> select user(); #查看当前用户 mysql> exit # 也可以用\q quit退出 # 默认用户登陆之后并没有实际操作的权限 # 需要使用管理员root用户登陆 $ mysql -uroot -p # mysql5.6默认是没有密码的 #遇到password直接按回车键 mysql> set password = password('root'); # 给当前数据库设置密码 # 创建账号 mysql> create user 'eva'@'192.168.10.%' IDENTIFIED BY '123';# 指示网段 mysql> create user 'eva'@'192.168.10.5' # 指示某机器可以连接 mysql> create user 'eva'@'%' #指示所有机器都可以连接 mysql> show grants for 'eva'@'192.168.10.5';查看某个用户的权限 # 远程登陆 $ mysql -uroot -p123 -h 192.168.10.3 # 给账号授权 mysql> grant all on *.* to 'eva'@'%'; mysql> flush privileges; # 刷新使授权立即生效 # 创建账号并授权 mysql> grant all on *.* to 'eva'@'%' identified by '123'
设想一下,当我们想要从文件中存取数据的时候,是一个非常繁琐的过程,主要是因为文件中所有的内容对我们来说是连续的,没有规则的。如果我们将数据按照规则存在一个文件中,在设计一种规则可以拼凑组合成我们需要的操作,并通过这些指示在文件中存取数据,那么操作数据是不是能够变得更加简单快速呢?这串规则就被我们成为SQL。
SQL : 结构化查询语言(Structured Query Language)简称SQL(发音:/ˈes kjuː ˈel/ "S-Q-L"),是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统
SQL语言主要用于存取数据、查询数据、更新数据和管理关系数据库系统,SQL语言由IBM开发。SQL语言分为3种类型:
1、DDL语句 数据库定义语言: 数据库、表、视图、索引、存储过程,例如CREATE DROP ALTER
2、DML语句 数据库操纵语言: 插入数据INSERT、删除数据DELETE、更新数据UPDATE、查询数据SELECT
3、DCL语句 数据库控制语言: 例如控制用户的访问权限GRANT、REVOKE
1. 操作文件夹(库) 增:create database db1 charset utf8; 查:show databases; 改:alter database db1 charset latin1; 删除: drop database db1; 2. 操作文件(表) 先切换到文件夹下:use db1 增:create table t1(id int,name char); 查:show tables; 改:alter table t1 modify name char(3); alter table t1 change name name1 char(2); 删:drop table t1; 3. 操作文件中的内容(记录) 增:insert into t1 values(1,'egon1'),(2,'egon2'),(3,'egon3'); 查:select * from t1; 改:update t1 set name='sb' where id=2; 删:delete from t1 where id=1; 清空表: delete from t1; #如果有自增id,新增的数据,仍然是以删除前的最后一样作为起始。 truncate table t1;数据量大,删除速度比上一条快,且直接从零开始, *auto_increment 表示:自增 *primary key 表示:约束(不能重复且不能为空);加速查找