python开发实战Django配置数据库
01 安装数据库
MySQL 是一个开源的数据库管理系统,通常作为最受欢迎的 LAMP(Linux,Apache,MySQL,PHP/Python/Perl)的一部分进行安装,其通过关系型数据库和 SQL 来管理数据。
在 Ubuntu 中,默认只有最新版本的 MySQL 包含在 APT 软件包存储库中。
要安装它,需要使用 apt 更新服务器上的软件包索引:
sudo apt-get update #更新软件依赖关系
然后安装默认的 MySQL 软件包:
sudo apt install mysql-server
这一步不会进行一些配置相关的提示(例如:设置密码),因为会使 MySQL 的安装不安全,我们将在下一步解决该问题。
02.配置MySQL
在Ubuntu下MySQL缺省是只允许本地访问的,使用workbench连接工具是连不上的;如果你要其他机器也能够访问的话,需要进行配置;在安装完 MySQL 之后,应该运行一下包含的安全脚本
$ sudo mysql_secure_installation #这将会通过一系列的提示,帮助我们做一些常规化的安全设置:
重点说一下第一个提示,这会询问我们是否愿意设置验证密码插件,该插件可用于测试MySQL
密码的强度。
03更改用户认证方式
虽然上面设置了 root 用户的密码,但当通过 MySQL 终端登录时,并不能通过密码进行认证:
$ mysql -u root -p
Enter password:
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
在这是因为在 MySQL 5.7
及之后的版本中,root 用户被默认设置为通过 auth_socket
插件(而非密码)认证,其主要原因是出于对数据库的安全性考虑。
话虽如此,但偶尔也需要外部程序来访问,这时就会很麻烦了。为了使 root 用户能通过密码方式连接 MySQL,先通过终端打开 MySQL 的提示符:
作者:waws520
链接:https://juejin.cn/post/6970850972687925262
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
mysql> SELECT user, authentication_string, plugin, host FROM mysql.user; #通过该命令检查Mysql的每个用户认证方式。
mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
| user | authentication_string | plugin | host |
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
| debian-sys-maint | $A$005$0RA(%M\;<5nqa`3RyQv2U5BkS0rq0czXinXSzyoVIBDZN275oR2vi.Jft7 | caching_sha2_password | localhost |
| mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.session | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.sys | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| root | | auth_socket | localhost |
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
5 rows in set (0.00 sec)
显而易见,root
用户的认证方式是 auth_socket。
现在运行如下命令,将认证方式更改为密码认证(即:mysql_native_password
):
mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'luyu1234';
注意:务必设置一个高强度的密码(这里的“luyu1234”仅仅是为了测试),该操作将会改变步骤 2 中设置的密码。
如果显示可知我们设置的密码太简单了,所以不能通过,下面我们可以修改参数,来达到修改密码的目的。
mysql> SHOW VARIABLES LIKE 'validate_password%';
+----