[python]13、pymysql——使用python *** 控linux里的MySQL

[python]13、pymysql——使用python *** 控linux里的MySQL,第1张

目录

1、使用MySQL服务

第一步:安装MySQL

第二步:启动MySQL

第三步:在服务端给MySQL的root用户设置密码并进入MySQL

[可能出现的错误]

第四步:MySQL命令的使用

第五步:python *** 控数据库

[可能出现的问题:连python连接不上linux的MySQL]


1、使用MySQL服务 第一步:安装MySQL
[root@fttswlp ~]# yum install mariadb-server  mariadb -y
第二步:启动MySQL
[root@fttswlp ~]# systemctl start mariadb

查看服务是否启动

[root@fttswlp ~]# ps aux|grep  maria|grep -v grep
mysql      2092  0.3  4.3 968920 81688 ?        Sl   19:32   0:00 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-error=/var/log/mariadb/mariadb.log --pid-file=/var/run/mariadb/mariadb.pid --socket=/var/lib/mysql/mysql.sock

我们现在是使用一台机器及充当客户端又充当服务器。

第三步:在服务端给MySQL的root用户设置密码并进入MySQL
[root@fttswlp ~]# mysqladmin -u root password 123456
[root@fttswlp ~]# mysql -u root -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 5.5.68-MariaDB MariaDB Server

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)]> 
[可能出现的错误]

设置密码的时候,若是出现"Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'",这问题的话,我们只需要按下边的图片修改我们/etc/my.cnf文件就行了

第四步:MySQL命令的使用
MariaDB [mysql]> show databases; #查看有哪些数据库
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
4 rows in set (0.00 sec)

MariaDB [mysql]> use mysql  # 使用mysql数据库
MariaDB [mysql]> show tables;  # 查看当前数据库有哪些表
MariaDB [mysql]> select * from user \G;  # 查看当前user表里的内容
  

若是输入了下边这条命令的话,会出现在python中连接不上linux数据库的情况,也就是说下面这条命令是不需要使用的。若是你输入了这条命令的话,下面也有解决的办法。


[创建数据库sc ]

 

[使用表]

[创建表格]

# 在sc里边执行这段代码
create table userinfo(
    username varchar(128),
    userage int
    
)charset=utf8;

 [在表格里输入内容]

第五步:python *** 控数据库

[安装pymysql库]

先在Terminal的local选项,使用"pip install pymysql"命令,安装pymysql库。

[使用python *** 控MySQL]

运行的初始代码

import pymysql

# 连接数据库
db = pymysql.connect(
    host = "192.168.29.128",  # mysql主机IP
    user = "sc",  # 用户名
    passwd = "123456",  # 密码
    database = "sc"  # 数据库
)

cursor = db.cursor()

[可能出现的问题:连python连接不上linux的MySQL]

若使用python *** 控MySQL,不能连接的话,改/etc/my.cnf文件。可能原因是输入了" update user set Host="%" where User="root" and Host = "localhost" " 或者其他的问题

然后使用"systemctl restart mysql",在直接使用"mysql -u root"就能够直接进入MySQL了,使用"show databases;"命令看到一下库,若是是这样就进行下一步

 这样之后,进行下边的 *** 作,若是能够使用密码登陆就算成功了 

能够使用密码登录之后,我们还要把/etc/my.cnf文件中之前输入的命令注释掉。

结论,不能使用" update user set Host="%" where User="root" and Host = "localhost" "这个命令来改变root用户的权限

 [创建一个有所有权限的普通用户来进行连接 *** 作]

因为我们不能直接用MySQL里的root用户来连接(可能是root用户权限太大,然后MySQL不给我们连接的权限),所以我们需要新建一个用户并且给它所有权限,那么就相当于是一个root用户了

MariaDB [(none)]> grant all on *.* to sc@'%' identified by '123456';
Query OK, 0 rows affected (0.01 sec)

# grant all on *.* ,所有的权限都给所有的库何表
# 所有的主机都可以以sc用户登入当前这里,它有所有的权限

MariaDB [(none)]> flush privileges;  # 刷新一下所有权限
Query OK, 0 rows affected (0.02 sec)

前提:要先把防火墙关闭,不然会出现下面这种情况。使用"iptables -F"或者使用"service firewalld stop"这个命令也可以

运行结果这样就是连接上去了

 

执行的完整的测试代码

import pymysql

# 连接数据库
db = pymysql.connect(
    host = "192.168.29.128",  # mysql主机IP
    user = "sc",  # 用户名
    passwd = "123456",  # 密码
    database = "sc"  # 数据库
)

# 使用cursor()方法创建一个游标对象,用于保存中间结果(若是没有游标的话,会把东西输出到屏幕,那样就不能够保存下来)
cursor = db.cursor()

# 使用execute执行sql语句
cursor.execute("select * from userinfo")
# data = cursor.fetchone()
data = cursor.fetchall()

print(data)

# 关闭数据库
db.close()

[执行结果] 

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/796724.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-06
下一篇 2022-05-06

发表评论

登录后才能评论

评论列表(0条)

保存