![](https://images2018.cnblogs.com/blog/1318434/201804/1318434-20180417124606550-1172911145.png)
一、介绍:
mysql数据库管理软件:
套接字:服务端,客户端;客户端可访问服务端得数据
1.支持并发;操作得是共享得数据
2.处理锁,数据安全,性能
3.用别人得软件,得照着别人得规范,组织自己得语法规则
本章学得内容:
1.mysql基本管理
2.sql语句得学习
二、概述:
1、数据库服务器:运行数据库管理软件的计算机
2、数据库管理软件:mysql,oracle,db2,slqserver mysql被oracle 收购了
3、库:文件夹
4、表:文件
5、记录:事物一系列典型的特征:egon,male,18,oldgirl
6、数据:描述事物特征的符号
三、MySQL 介绍:
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下公司。
mysql是什么
mysql就是一个基于socket编写的C/S架构的软件
客户端软件
mysql自带:如mysql命令,mysqldump命令等
python模块:如pymysql
四、数据库管理软件分类:
分两大类:
关系型:如sqllite,db2,oracle,access,sql server,MySQL,注意:sql语句通用
非关系型:mongodb,redis,memcache
可以简单的理解为:
关系型数据库需要有表结构,表结构 = 字段 + 数据类型 + 约束条件
非关系型数据库是key-value存储的,没有表结构
五、下载安装:
1.windows:
windows - mysql下载安装
2.Linux:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
http://www.cnblogs.com/linhaifeng/articles/7126847.html
centos7:
sudo su
yum -y install mariadb- server mariadb
centos6:
yum -y install mysql- server mysql
启动:
systemctl start mariadb
systemctl status mariadb
mysql
... # 成功了
centos:
设置密码:...mysqladmin -uroot -p password "123"
忘记密码 跳过授权
systemctl stop mariadb
启动:
mysqld_safe --skip-grant-tables
sudo su
mysql -uroot -p 直接登录
update mysql.user set password=password("123") where user="root" and host="localhost";
flush privileges;
exit
重启mysql 服务
杀死之前的mysql
pkill -9 mysql
再启动:
systemctl start mariadb # 正常的登录
mysql -uroot -p123
---------------------------------
统一字符:
mysql
\s
exit
vim /etc/my.cnf
ini # 和上面一样 复制粘贴 内容.ini 到 my.cnf
wq!
systemctl restart mariadb
mysql
\s
就修改了... utf8
---------------------------------
Ubuntu 安装mysql:
sudo apt-get install mysql-server mysql-client
sudo netstat -tap | grep mysql
mysql -uroot -p123
linux
linux
3.mac:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
***.dmg 安装
设置环境变量
/usr/local/mysql
vim /etc/profile
PATH=/usr/local/mysql/bin:/usr/local/mongodb/bin:$PATH
export PATH
:wq!
.source /etc/profile 立即生效
mysql
>>>: ... 成功了
mysql
select user();
exit;
mysqladmin -uroot -p password "123"
mysql -uroot -p123
mysqladmin -uroot -p123 password "456"
mysql -uroot -p456
关掉已经开启的;
跳过授权启动:
mysqld_safe --skip-grant--tables
sudo su
mysql -uroot -p # 不用密码也可以登录
修改密码:
update mysql.user set password=password("") where user="root" and host="localhost";
flush privileges;
exit
关掉 再正常启动
ps aux | grep mysql
kill -9 6334
kill -9 6249
kill -9 6432
正常启动 工具
mysql -uroot -p 正常启动了 刚才没有设置密码
---------------------------------
统一字符:
mysql
\s
exit
vim /etc/my.cnf
a
.ini 之前的内容复制 粘贴
esc :wq!
重启服务
mysql
\s 这样就修改了 utf-8
mac
mac
六、MySQL启动与查看:
1.linux平台下查看
[root@egon ~]# systemctl start mariadb #启动
[root@egon ~]# systemctl enable mariadb #设置开机自启动
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.
[root@egon ~]# ps aux |grep mysqld |grep -v grep #查看进程,mysqld_safe为启动mysql的脚本文件,内部调用mysqld命令
mysql 3329 0.0 0.0 113252 1592 ? Ss 16:19 0:00 /bin/sh /usr/bin/mysqld_safe --basedir=/usr
mysql 3488 0.0 2.3 839276 90380 ? Sl 16:19 0:00 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-error=/var/log/mariadb/mariadb.log --pid-file=/var/run/mariadb/mariadb.pid --socket=/var/lib/mysql/mysql.sock
[root@egon ~]# netstat -an |grep 3306 #查看端口
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN
[root@egon ~]# ll -d /var/lib/mysql #权限不对,启动不成功,注意user和group
drwxr-xr-x 5 mysql mysql 4096 Jul 20 16:28 /var/lib/mysql
You must reset your password using ALTER USER statement before executing this statement.
安装完mysql 之后,登陆以后,不管运行任何命令,总是提示这个
mac mysql error You must reset your password using ALTER USER statement before executing this statement.
解决方法:
step 1: SET PASSWORD = PASSWORD('your new password');
step 2: ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
step 3: flush privileges;
2.windows平台到服务中查看即可
七、登录设置密码:
初始状态下,管理员root,密码为空,默认只允许从本机登录localhost
设置密码
[root@egon ~]# mysqladmin -uroot password "123" 设置初始密码 由于原密码为空,因此-p可以不用
[root@egon ~]# mysqladmin -uroot -p"123" password "456" 修改mysql密码,因为已经有密码了,所以必须输入原密码才能设置新密码
命令格式:
[root@egon ~]# mysql -h172.31.0.2 -uroot -p456
[root@egon ~]# mysql -uroot -p
[root@egon ~]# mysql 以root用户登录本机,密码为空
八、破解密码:
1.linux平台下,破解密码的两种方式
方法一:删除授权库mysql,重新初始化
[root@egon ~]# rm -rf /var/lib/mysql/mysql #所有授权信息全部丢失!!!
[root@egon ~]# systemctl restart mariadb
[root@egon ~]# mysql
方法二:启动时,跳过授权库
[root@egon ~]# vim /etc/my.cnf #mysql主配置文件
[mysqld]
skip-grant-table
[root@egon ~]# systemctl restart mariadb
[root@egon ~]# mysql
MariaDB [(none)]> update mysql.user set password=password("123") where user="root" and host="localhost";
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> \q
[root@egon ~]# #打开/etc/my.cnf去掉skip-grant-table,然后重启
[root@egon ~]# systemctl restart mariadb
[root@egon ~]# mysql -u root -p123 #以新密码登录
2.windows平台下,5.7版本mysql,破解密码的两种方式:
方式一
#1 关闭mysql
#2 在cmd中执行:mysqld --skip-grant-tables
#3 在cmd中执行:mysql
#4 执行如下sql:
update mysql.user set authentication_string=password('') where user = 'root';
flush privileges;
#5 tskill mysqld #或taskkill -f /PID 7832
#6 重新启动mysql
方式二
#1. 关闭mysql,可以用tskill mysqld将其杀死
#2. 在解压目录下,新建mysql配置文件my.ini
#3. my.ini内容,指定
[mysqld]
skip-grant-tables
#4.启动mysqld
#5.在cmd里直接输入mysql登录,然后操作
update mysql.user set authentication_string=password('') where user='root and host='localhost';
flush privileges;
#6.注释my.ini中的skip-grant-tables,然后启动myqsld,然后就可以以新密码登录了
九、统一字符编码:
强调:配置文件中的注释可以有中文,但是配置项中不能出现中文
#在mysql的解压目录下,新建my.ini,然后配置
#1. 在执行mysqld命令时,下列配置会生效,即mysql服务启动时生效
[mysqld]
;skip-grant-tables
port=3306
character_set_server=utf8
default-storage-engine=innodb
innodb_file_per_table=1
#解压的目录
basedir=E:\mysql-5.7.19-winx64
#data目录
datadir=E:\my_data #在mysqld --initialize时,就会将初始数据存入此处指定的目录,在初始化之后,启动mysql时,就会去这个目录里找数据
#2. 针对客户端命令的全局配置,当mysql客户端命令执行时,下列配置生效
[client]
port=3306
default-character-set=utf8
user=root
password=123
#3. 只针对mysql这个客户端的配置,2中的是全局配置,而此处的则是只针对mysql这个命令的局部配置
[mysql]
;port=3306
;default-character-set=utf8
user=egon
password=4573
#!!!如果没有[mysql],则用户在执行mysql命令时的配置以[client]为准
统一字符编码
#1. 修改配置文件
[mysqld]
default-character-set=utf8
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
#mysql5.5以上:修改方式有所改动
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
#2. 重启服务
#3. 查看修改结果:
\s
show variables like '%char%'
十、初识sql语句:
sql(Structured Query Language 即结构化查询语言)
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 create database db1;
show databases;
改:alter database db1 charset gbk;
删:drop database db1;
2.操作文件(表):
切换文件夹:
use db1;
select database();
增:create table t1(id int,name char);
查:show tables;
desc t1;
show create table t1;
show create table t1\G;
改:alter table t1 modify name char(6);
alter table t1 change name name1 char(7);
删:drop table t1;
3.操作文件内容(记录):
增:insert into t1(id,name) values(1,'alice1'),(2,'alice2'),(3,'alice3');
insert into t1 values(1,'egon1'),(2,'egon2'),(3,'egon3');
查:select id,name from db1.t1;
select id from db1.t1;
select * from db1.t1; # 不推荐使用 * 效率低
改:update db1.t1 set name='alex';
update t1 set name='egon' where id=2;
删:delete from t1;
delete from t1 where id=2;