在 Ubuntu 上安装 MariaDB 并使用 PyMySQL 操作

本文主要内容:在 Ubuntu 20.04 上安装、保护、使用 MariaDB 和 PyMySQL。

本系列的相关文章:

在 Ubuntu 安装 MariaDB

本文的主要参考内容来自:https://cloud.tencent.com/developer/article/1631666,以下步骤目前亲测可用。MariaDB 是一个开源的关系型数据库管理系统,向后兼容,可替代 MySQL。MariaDB 是由 MySQL 的一些原开发者和很多社区成员共同开发的。

前提条件

拥有 Ubuntu 服务器的管理权限,或者以 root 身份 或者以拥有 sudo 权限的用户身份登录系统。

在 Ubuntu 上安装 MariaDB

sudo apt update
sudo apt install mariadb-server

一旦安装完成,MariaDB 服务将会自动启动。 想要验证数据库服务器是否正在运行,输入:

sudo systemctl status mariadb

输出将会显示服务已经启用,并且正在运行。

保护 MariaDB

MariaDB 服务器有一个脚本叫做mysql_secure_installation用来提高数据库服务器安全。

不带参数运行脚本:

sudo mysql_secure_installation

脚本将会提示输入 root 密码:

Enter current password for root (enter for none):

因为没有设置 root 密码,仅仅输入回车”Enter”。在下一个提示中,会被问到是否 MySQL root 用户设置密码:

Set root password? [Y/n] n

输入n。在 Ubuntu 上, MariaDB 用户默认使用auth_socket进行鉴权。这个插件会检查启动客户端的本地系统用户是否和指定的 MariaDB 用户名相匹配。如果输入Y,详见本文最后的错误排除。

下一步,将会被要求移除匿名用户,限制 root 用户访问本地机器,移除测试数据库,并且重新加载权限表。这里都填Y

Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

以 root 身份登录

想要在终端命令行和 MariaDB 服务器进行交互,使用mysql客户端工具或者MariaDB。这个auth_socket插件将会通过 Unix socket 文件验证用户来连接localhost。这就意味着不能通过提供密码来验证 root。想要以 root 用户名登录 MariaDB 服务器,输入:

sudo mysql

出现 MariaDB shell,就像下面一样:

Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 61
Server version: 10.3.22-MariaDB-1ubuntu1 Ubuntu 20.04

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> Bye

如果想使用第三方程序,例如 phpMyAdmin ,以 root 身份登录MariaDB 服务器,有两个选择。

第一个是将鉴权方法从auth_socket修改为mysql_native_password(详见本文最后的错误排除):

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'very_strong_password';
FLUSH PRIVILEGES;

(推荐)第二个是创建一个管理员用户,可以访问所有的数据库:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'very_strong_password';

可以将这个管理员用户命名为任何想要的名字,但是请确保使用强密码。

安装 PyMySQL

安装 PyMySQL 以在 Python 中使用 MariaDB:

# 安装PyMySQL以在Python中使用MariaDB
sudo python3 -m pip install PyMySQL
pip install PyMySQL

数据库和数据表(创建、修改、删除)

mysql -u用户名 -p密码 # 数据库登录,例如 mysql -uroot -proot
show databases; # 展开数据库列表,注意:所有的分号;不可省略
use eth_5min; # 使用该数据库
show tables; # 查看该数据库下的所有数据表
create database btc_5min # 创建数据库
create table BTC-USDT-SWAP (ts text,o text,h text,l text,c text,vol text,volCcy text); # 创建数据表
select * from your_table limit 10000; # 查找数据

错误排除

下方的内容参考来源为:https://blog.csdn.net/jlu16/article/details/82809937

插入数据出错时:当通过root用户登录到 MySQL 数据库时,得到 ERROR 1698 (28000): Access deniedfor user ‘root’@‘localhost’ 的错误提示。

原因是因为在最近的Ubuntu安装(当然也可能是其他安装)中,MySQL默认使用了 UNIX auth_socket plugin 插件。简单来说这意味着当 db_users 使用数据库时,将会通过系统用户认证表进行认证。可以通过下面的命令看看 root 用户是否设置成了这样:

$ sudo mysql -u root # I had to use "sudo" since is new installation

mysql> USE mysql;
mysql> SELECT User, Host, plugin FROM mysql.user;

+------------------+-----------------------+
| User             | plugin                |
+------------------+-----------------------+
| root             | auth_socket           |
| mysql.sys        | mysql_native_password |
| debian-sys-maint | mysql_native_password |
+------------------+-----------------------+

其中 root 用户在使用auth_socket插件。而我们设置 root 用户使用mysql_native_password插件。

$ sudo mysql -u root # I had to use "sudo" since is new installation

mysql> USE mysql;
mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> exit;

$ service mysql restart
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇