在使用Django进行 Web 开发时,MySQL通常被用作数据库管理系统。
本指南详细介绍了MySQL 在 CentOS 上的安装、远程访问配置及常见错误解决方案,帮助开发者快速搭建和管理数据库环境,确保 Django 项目能够顺利运行。
文章目录
- 环境配置
- MySQL远程访问
- 常见错误及解决方法
- 总结
环境配置
在开始学习Django之前需要先进行环境配置。首先需要搭建MySQL数据库,并正确配置它。
使用命令cd /usr/local/src,进入本机源文件目录。
cd/usr/local/src使用wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm命令下载MySQL的yum源的rpm包。
wgethttps://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm使用命令rpm -ivh mysql57-community-release-el7-11.noarch.rpm安装rpm包。
rpm-ivhmysql57-community-release-el7-11.noarch.rpm使用yum install -y mysql-server命令安装mysql-server:
yuminstall-ymysql-server使用命令systemctl start mysqld启动mysqld:
systemctl start mysqld使用命令ps aux|grep mysqld查看mysqld是否已启动:
psaux|grepmysqld使用命令systemctl enable mysqld设置开机自动启动:
systemctlenablemysqld使用初始密码登陆,由于MySQL从5.7开始不允许首次安装后,使用空密码进行登录,系统会随机生成一个密码以供管理员首次登录使用,这个密码记录在/var/log/mysqld.log文件中。
使用cat /var/log/mysqld.log|grep 'A temporary password'命令可以查看此密码,最后一行冒号后面的部分就是初始密码。
cat/var/log/mysqld.log|grep'A temporary password'使用刚刚查看的密码登陆MySQL。
mysql-uroot-p进行密码修改。use mysql;:这行代码的作用是选择数据库。在这个例子中,我们正在选择名为 “mysql” 的数据库。alter user 'root'@'localhost' identified by 'your_password';:这行代码的目的是更改用户的密码。在这里,我们正在将 ‘localhost’ 上的 ‘root’ 用户的密码更改为 ‘your_password’。
use mysql;alter user'root'@'localhost'identified by'your_password';完成以上步骤后,MySQL数据库的配置就完成了。
MySQL远程访问
在进行Django开发时通常会在生产环境中使用MySQL数据库,并且允许远程访问。以下是配置MySQL远程访问的步骤:
将host设置为%,表示允许任何IP都能连接MySQL:
mysql-uroot-hlocalhost-puse mysql;update usersethost='%'whereuser='root'andhost='localhost';如果需要指定某个IP进行连接,可以执行以下语句,设置了仅root用户且IP地址为106.39.178.131和本机才可以访问。
update usersethost='106.39.178.131'whereuser='root'andhost='localhost';执行完以上语句后,刷新权限表,使配置生效:
flush privileges;最后开放云服务器3306端口,就可以实现MySQL远程访问了。
常见错误及解决方法
在配置和使用Django时,可能会遇到一些常见的错误。下面是一些常见错误及其解决方法:
错误1:ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing
解决方法:
ALTER USER 'root'@'localhost' IDENTIFIED BY '密码' PASSWORD EXPIRE NEVER;是修改本地的root用户的密码,并设置该密码永不过期。flush privileges;是刷新MySQL的系统权限相关表,使得前面对用户权限的修改立即生效。
ALTERUSER'root'@'localhost'IDENTIFIED BY'密码'PASSWORD EXPIRE NEVER;flush privileges;错误2:ERROR 1130: host ‘localhost’ not allowed to connect to this MySQL server
解决方法:
这段代码是在MySQL数据库管理系统中执行的。下面是每行代码的解释:
use mysql;:这条命令的作用是切换到"mysql"数据库,“mysql"数据库是MySQL系统的内置数据库,其中包含了一些系统级别的信息,例如用户的信息。select host,user,password from user;:这条命令从"user"表中选取了"host”、“user"和"password"这三个字段。“user"表中储存了MySQL的用户信息。update user set host = '%' where user ='root';:这条命令的作用是更新"user"表中,“user"字段值为"root"的记录,将这些记录的"host"字段的值都改为”%”。”%"在这里代表任意主机,也就是说,这条命令的执行意味着"root"用户可以从任意主机进行登录。flush privileges;:这条命令的作用是刷新系统的权限相关的信息。当"user"表的内容发生变化后,必须要执行这个命令,才能使得变更生效。
mysql>use mysql;# 查询出数据库的用户名mysql>select host,user,password from user;# 把用户表里面的host项改为“%”mysql>update usersethost='%'where user='root';mysql>flush privileges;#刷新用户权限表# 重启mysql即可错误3:ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
解决方法:
set global validate_password_policy=0;:此命令改变全局的密码验证策略。数字0表示将策略设置为低级别,这将减少对密码复杂性的要求。set global validate_password_length=1;:此命令改变全局的密码最小长度要求。数字1表示只要密码长度大于或等于1个字符就可以,这也降低了对密码强度的要求。alter user 'root'@'localhost' identified by '你的新密码';:此命令用于修改指定用户(这里是位于localhost的root用户)的密码。'你的新密码’需要替换为你希望设定的新密码。
mysql>setglobalvalidate_password_policy=0;Query OK,0rows affected(0.00sec)setglobalvalidate_password_length=1;Query OK,0rows affected(0.00sec)alter user'root'@'localhost'identified by'你的新密码';Query OK,0rows affected(0.01sec)总结
本文介绍了MySQL 在 CentOS 服务器上的安装及基础配置,通过正确的安装和配置,开发者可以确保 MySQL 数据库稳定运行,并顺利连接到 Django 项目。
本文还提供了解决 MySQL 连接错误、密码策略问题的方法,帮助开发者快速定位并修复数据库问题。希望本指南能帮助大家高效搭建 Django 项目的数据库环境,提高开发效率。