linux通过远程访问MySQL数据库,并执行相关操作

本文详细介绍了如何在MySQL服务器上进行初始化设置,包括更改my.cnf配置文件,调整MySQL监听地址,更新user表中的host项,并通过Python脚本与MySQL数据库交互进行数据操作。同时解决了在远程主机上遇到的连接问题。
 步骤:
1、首先安装MySQL,为保证以下步骤能够顺利执行,要求数据库为最初的安装状态;

2、在MySQL服务器上登录MySQL进行初始化设置:
     首先用: sudo vim /etc/mysql/my.cnf
	  # Instead of skip-networking the default is now to listen only on
          # localhost which is more compatible and is not less secure.     
          # bind-address          = 127.0.0.1  <span style="color:#ff0000;">//注释掉此句,因为默认MySQL是只能本地访问的。</span>
          #     
          # * Fine Tuning

     然后登录MySQL:
<span style="white-space:pre">	</span>mysql -u root -p

     更改mysql 数据库的user表里的host项,将“localhost”改为“%”
update user set host = '%' where user = 'root';
select host, user from user;
 
 
     这样还不行,最后还要执行: mysql>FLUSH PRIVILEGES  才能生效
      不要忘了重启MySQL,不然是不起作用的!!!记得加sudo权限哦。。
sudo service mysql restart
 
3、在远程主机上执行下面的Python脚本,执行前要安装 apt-get install python-mysqldb
import MySQLdb
import sys,string,os

try:
    conn = MySQLdb.connect(host ='192.168.102.221',user='root',db='test',passwd='password',port=3306) //这里对test数据库进行操作
except Exception,e:
    print e
    sys.exit()
cur = conn.cursor()
sql = """insert into config (id,dpid,port,bandwidth) values(4,"0000125",2,1)""" //此条语句按实际情况来写。
try:
    cur.execute(sql)
    conn.commit()
except Exception,e:
    print e
    conn.rollback()
conn.close
print "success"

注:这里我遇到了很多问题,因为222上更改了好多配置,最后也没解决下面的问题:
     (2003, "Can't connect to MySQL server on '192.168.102.222' (111)")

项目远程访问Linux系统中的MySQL数据库可按以下步骤进行: 1. **找到Linux的IP地址**:远程连接必须知道Linux的IP地址,为方便连接,最好将其设置为静态IP [^1]。查看linux主机ip地址可使用`ifconfig`命令 [^2]。 2. **开启MySQL远程访问权限**:在mysql控制台输入以下语句打开数据库远程连接的权限: ```sql GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '自己数据的密码' WITH GRANT OPTION; FLUSH PRIVILEGES; ``` `root`代表远程登录使用的用户名,`%`代表允许任意ip登录,若想指定特定的IP,可以把`%`替换为对应IP;`自己数据的密码`代表远程登录时使用的密码。`FLUSH PRIVILEGES;`是让权限立即生效。执行完语句后,使用`exit`退出数据库 [^2][^3]。 3. **修改my.cnf配置文件**:若找不到该文件位置,可以输入`find /* -name my.cnf`查找。通过`vim`编辑该文件,找到`bind-address = 127.0.0.1`这一句,在前面加个`#`号注释掉,保存退出;若没有则不用设置。还需在`[mysqld]`下添加`skip_grant_tables`跳过验证 [^3]。 4. **重启MySQL服务**:使用命令`systemctl restart mysqld`(不同Linux发行版可能命令不同,也可用`service mysql restart`)重启数据库服务 [^2][^3]。 5. **项目中配置连接信息**:以Python项目使用`pymysql`库为例: ```python import pymysql # 建立数据库连接 conn = pymysql.connect( host='Linux的IP地址', # 替换为实际的Linux IP地址 user='root', password='自己数据的密码', database='数据库名', port=3306 ) # 创建游标对象 cursor = conn.cursor() # 执行SQL查询 sql = "SELECT * FROM 表名" cursor.execute(sql) # 获取查询结果 results = cursor.fetchall() for row in results: print(row) # 关闭游标和连接 cursor.close() conn.close() ``` 如果是云服务器,需要打开3306端口。Windows下也可采用Navicat客户端连接,ip就是Linux的ip地址 [^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值