MySQL管理
一、安装MySQL Server,以Window PC为例
进入https://dev.mysql.com/downloads/installer/下载windows版本的mysql-installer-community-8.0.13.0.msi(使用community版本,Note: MySQL Installer is 32 bit, but will install both 32 bit and 64 bit binaries.),然后参照https://jingyan.baidu.com/article/642c9d343557e9644b46f743.html进行安装。主要注意几点:1、Choosing a Setup Type环节,选择Server Only即可满足大多数开发者的诉求;2、Installation环节,mysql install会自动检测依赖的环境缺失包,例如VC,请点击Execute补充安装缺失包,然后再点击Next进行Mysql的安装;3、在Type and Networking环节,选择Development Machine选项会使用最小的内存分配(因为是个人练习使用,所以不用占用太多电脑内存);4、Account and Roles环节,除了给root设置密码外,建议至少还新增一个User;5、windows service环节,建议配置mysql开机启动,省去手工开mysql服务步骤;
二、登录MySQL Server
在安装Mysql服务的windows PC服务器,打开MySQL Command Line Client窗口,输入root用户密码即可。
登录成功后,会print一些提示信息。例如每个完整的Comand命令都以;或者\g转义字符结束,实际上也可以\G转义字符结束,只不过是按列方式print结果;
三、管理MySQL Server的users
(未完待续:参考https://www.cnblogs.com/SQL888/p/5748824.html)
MySQL Server安装完成后,默认有一个叫做mysql的DataBase。在MySQL Command Line Client中,通过MySQL的DESC命令可以查看mysql.user表结构,使用SQL通用查询语句来了解你感兴趣的用户(例如python这个用户):
DESC mysql.user;
select user,host,plugin from mysql.user;
select * from mysql.user where user='python' \G
host列限制了允许user登录所使用的设备地址,root用户的localhost,表示root只能从安装MySQL Server的设备上登录,而%是个通配符,如果Host=192.168.1.%,那么就表示只要是IP地址前缀为“192.168.1.”的客户端都可以连接。如果Host=%,表示所有IP都有连接权限。
注意,MySQL 8.0.4开始默认使用caching_sha2_password作为认证的插件
mysql> select user,host,plugin from mysql.user;
+------------------+-----------+-----------------------+
| user | host | plugin |
+------------------+-----------+-----------------------+
| python | % | caching_sha2_password |
| mysql.infoschema | localhost | caching_sha2_password |
| mysql.session | localhost | caching_sha2_password |
| mysql.sys | localhost | caching_sha2_password |
| root | localhost | caching_sha2_password |
+------------------+-----------+-----------------------+
5 rows in set (0.00 sec)
而对于之前的版本的mysql,默认的认证插件为mysql_native_password。这会导致之前常用的Mysql管理软件无法认证登陆Mysql数据库,建议通过alter user命令,将root和其他相关用户修改为native认证模式:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Changeme_123';
ALTER USER 'python'@'%' IDENTIFIED WITH mysql_native_password BY 'Changeme_123';
flush privileges;
mysql> select user,host,plugin from mysql.user;
+------------------+-----------+-----------------------+
| user | host | plugin |
+------------------+-----------+-----------------------+
| python | % | mysql_native_password |
| mysql.infoschema | localhost | caching_sha2_password |
| mysql.session | localhost | caching_sha2_password |
| mysql.sys | localhost | caching_sha2_password |
| root | localhost | mysql_native_password |
+------------------+-----------+-----------------------+
5 rows in set (0.00 sec)
mysql>
四、Mysql数据库管理
1、图形化Mysql管理软件。可以选择HeidiSQL
2、Mysql shell管理
(待续,参考https://www.cnblogs.com/jiangxiaobo/p/6110647.html)
例如创建swuwensite这个DB,use suwensite后,show tables表格清单为空
create database suwensite default charset=utf8;
五、在Django中使用Mysql
Django与MySQL对应关系:
类(class)——表(table)
实例(class里面的每一个实例)——记录(table中的每一条记录,或者叫Columns)
1、创建Django项目
例如cmd到目录,创建Suwensite这个项目
django-admin startproject Suwensite
2、配置项目settings.py的Databases为Mysql
#Suwensite/settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': ‘Suwensite’),
'USER':'python',
'PASSWORD':'Changeme_123',
'HOST':'127.0.0.1',
'PORT':'3306',
}
}
3、运行migrate以在MySQL数据库中创建INSTALLED_APPS中各应用所对应的表
python manage.py migrate
4、给项目新增一个应用和对应Models,加入INSTALLED_APPS,并为该app创建数据库表
D:\Python\Projects\Suwensite>django-admin startapp polls
#polls/ models.py
from django.db import models
class Question(models.Model):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
class Choice(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
#Suwensite/settings.py
INSTALLED_APPS = [
'polls.apps.PollsConfig',
#...
]
D:\Python\Projects\Suwensite>
python manage.py check
python manage.py makemigrations polls
python manage.py migrate
5、检查Mysql数据库表, 已经生成表
mysql> use suwensite
Database changed
mysql> show tables
-> \g
+----------------------------+
| Tables_in_suwensite |
+----------------------------+
| auth_group |
| auth_group_permissions |
| auth_permission |
| auth_user |
| auth_user_groups |
| auth_user_user_permissions |
| django_admin_log |
| django_content_type |
| django_migrations |
| django_session |
| polls_choice |
| polls_question |
+----------------------------+
12 rows in set (0.00 sec)
6、Django数据库API
python manage.py shell进入shell模式后,from 模型 import 类
(待整理,见https://yiyibooks.cn/xx/Django_1.11.6/topics/db/queries.html)