day01 mysql
A. Recognize mysql
Relational Database:
The most popular relational database management system to support large databases, processing millions of records
Relational: oracle, sql_server, mysql: sql statement General; requires table structure
Non-relational: mongodb, redis, memcache; key-value form, without the table structure
Application Environment:
lamp, LNMP
What is mysql:
Based on a written socket c / s architecture software
Common terms:
# Server database server (for higher memory requirements)
# Database management systems such as: mysql open source software oracle charge fees sql_server
# Database storage of data warehouse
table
Record # row of data
Field
# Symbol recorded data describing things called data through digitized into the computer
# Twice redundant data storage, reduced performance, but improves safety
The primary key is the only #
Two foreign keys for association tables #
# Indexes speed up queries, is a data structure
# Referential integrity relationship requirements are not allowed in reference to an entity that does not exist, purpose: to maintain data consistency
Two .mysql installation (window Version)
server side:
1. official website to download https://dev.mysql.com/downloads/mysql/
Version: 5.7.28 64-bit software, mysql5.5 - mysql5.7 grammar almost all the same
2. Extract
Can be installed in the specified directory: D: \ mysql-5.7.28-winx64, directly specify the D drive, unzip the installation directory can be automatically created
3. Add the environment variable
The installation bin directory under the directory path, D: \ \ bin added to the system environment variable mysql-5.7.28-winx64
4. Initialize
mysqld --initialize-insecure # (initialize initialization; insecurity in the insecure)
Ordinary users do not have permission? Right-click the bottom left button, select "window powershell (administrator)", go in cmd administrator mode
Generating directory data directory in the installation, following library catalog
mysql: Authorized library
performance_schema (performance architecture :)
sys: system libraries
test: test library, the library has some initialization
5. Switch Service
mysqld: command line will live ram, explained that it had opened the Task Manager can see the mysql process.
client side:
1. Connect mysql server, the first connection without a password, password: When prompted, enter into direct
# mysql -uroot -p
2. Check the database:
> show databases;
3. Create a database:
> create database db1;
4. Check the version information databases, etc. (port number, character set)
> \s;
5. Exit Database
> exit
6. administrators to view mysql process
# Tasklist # View windows all processes
# tasklist | findstr mysql (task 任务)
7.管理员杀掉mysql进程, 根据上面命令找的PID
# taskkill /F /PID 366824
mysql服务: (window上添加mysqld服务)
1.管理员安装mysqld服务
# mysqld --install
2.管理员卸载mysqld服务
# mysqld --remove
3.管理mysqld服务
方式一.点来点去
可以在window"服务"里,找到mysqld,启动,停止,暂停,重启
方式二.管理员在命令行操作
# net start mysql
# net stop mysql
mysqld设置密码:
1.查看当前登录的用户账号
> select user(); #mysql 的函数user()
2.设置密码:
方式一:命令行设置, 或修改密码, 123456暴露了不安全, 所以一般不用这种方法,而且设置的时候也会提示warning insecure
# mysqladmin -uroot -p password "123456" //不暴露老密码: 当第一次设置时,提示password直接回车, //若之前有密码,当提示password时,输入原密码
# mysqladmin -uroot -p"123456" password "123" //暴露老密码: -p后面没有空格,否则报错,这两个password后面的是新密码
方式二:sql语句设置
> update mysql.user set authentication_string=password('123') where User='root'; #注意修改user表后, 不会立即生效(authentication 身份验证)
> flush privileges; #刷新权限,使user表立刻生效(不然,只能等重启mysql时才会生效)
#用password()函数给mysql.user表的某个用户所在记录的'身份验证字段'赋值新的密码字符串
3.忘记密码?
root用户可跳过授权登录服务器, 然后重置密码即可:
步骤一:root用户登录"以跳过授权表的方式开启的mysql服务器",先停掉之前的"以授权方式登录的mysql服务器"
# net stop mysql
跳过授权方式一:
命令行启动服务时加参数,如下
# mysqld --skip-grant-tables
跳过授权方式二:
写入配置文件: my.ini的 [mysqld] 下追加一行: skip-grant-tables
然后启动服务: 注意使用这个方式的时候, 修改完密码,一定要把配置文件中的这个参数去掉
> mysql -uroot -p
步骤二: 用sql语句设置密码,命令行的设置密码此时无法使用
> update mysql.user set authentication_string=password('123') where User='root'; #authentication_string字段和之前mysql版本不一样, 需注意,老的是password关键字
> flush privileges;
步骤三:退出"跳过授权方式的mysqld", 重新开启mysqld服务
> tasklist | findstr mysql
> taskkill /F /PID 382352
# net start mysql
统一字符编码
1.查看默认字符集,
> \s;
Server characterset: latin1 //默认字符集部分
Db characterset: latin1
Client characterset: gbk
Conn. characterset: gbk
2.创建mysql的配置文件, 在安装目录下创建 my.ini
[mysqld]
# 设置mysql的安装目录
basedir=D:\mysql-5.7.28-winx64
# 设置mysql数据库的数据的存放目录,必须是data
datadir=D:\mysql-5.7.28-winx64\data
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES #(strict 强制,严格)
# mysql端口
port=3306
# 字符集
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
3.重启mysql服务: 加载配置文件
4.连接mysql,查看字符集
> \s;
Server characterset: utf8
Db characterset: utf8
Client characterset: utf8
Conn. characterset: utf8
创建mysql用户和用户授权
1.创建用户名和设置密码
create user 'bajie'@'192.168.150.%' identified by ''; //% 号为通配符,代表.* , _号代表. , by后面''填写密码, 新用户默认无任何权限(identified 鉴定)
2.删除用户
drop user 'bajie'@'192.168.150.%';
3.修改用户名
rename user 'bajie'@'192.168.150.%' to 'bajie'@'%'; //可以修改用户名和登录的地址
4.修改用户密码
set password for 'bajie'@'%'=password('123');
5.给用户授权
grant select,insert,update on db1.* to 'wukong'@'%';
grant all privileges on *.* to 'wukong'@'%'; //授所有权限, 但不包括授权的权限
6.取消用户权限
revoke all privileges on *.* from 'wukong'@'%';
7.查看某个用户的授权
show grants for 'wukong'@'%';
建库建表
> create database db1;
> create table db1.t1(id int,name char(10));
> create table db1.t1(id int,name char(10)) default charset='utf8'; //指定编码创建表
> show databases;
> show tables;
> desc db1.t1; //查看表结构
> insert into db1.t1(id,name) values(1,'tongxue'); //插入一条记录
> insert into db1.t1(id,name) values(2,'tongxue'),(3,'悟空'); //插入多条记录
> show create table db1.t1; //查看当时是如何创建这个表的
> drop table db1.t1; //删除表
内容总结
1.mysql是基于c/s架构的软件
2.如何安装mysql
3.安装mysql服务
# mysqld --install
# mysqld --remove
# net start mysql
# net stop mysql
4.破解密码
# mysqld --skip-grant-tables
5.统一字符编码
my.ini
> \s;
6.创建用户
> create user 'username'@'hostname' identified by 'password';
7.给用户授权
> grant all privileges on *.* to 'username'@'hostname';
8.撤销用户权限
> revoke all privileges on *.* from 'username'@'hostname';
9.sql语句
> select user();
> show databases;
> create database db1;
> create table db1.t1(id int,name char(10));
> insert into db1.t1(id,name) values(1,'bajie'), (2,'wukong');