安装MySQL
sudo apt-get install mysql-server
配置MySQL
默认的MySQL安装之后根用户是没有密码的,所以首先用根用户进入:
$mysql -u root
在这里之所以用-u root是因为我现在是一般用户(firehare),如果不加-u root的话,mysql会以为是firehare在登录。注意,我在这里没有进入根用户模式,因为没必要。一般来说,对mysql中的数据库进行操作,根本没必要进入根用户模式,只有在设置时才有这种可能。
进入mysql之后,最要紧的就是要设置Mysql中的root用户密码了,否则,Mysql服务无安全可言了。
mysql> GRANT ALL PRIVILEGES ON *.* TO root@localhost IDENTIFIED BY "123456"(填写你自己的password);
注意,我这儿用的是123456做为root用户的密码。
这样的话,就设置好了MySQL中的root用户密码了,然后就用root用户建立你所需要的数据库。我这里就以bt_data为例:
mysql>CREATE DATABASE bt_data;
mysql>GRANT ALL PRIVILEGES ON bt_data.* TO bt_data@localhost IDENTIFIED BY "123456";
这样就建立了一个bt_data的用户,它对数据库bt_data有着全部权限。以后就用bt_data来对bt_data数据库进行管理,而无需要再用root用户了,而该用户的权限也只被限定在bt_data数据库中。
关于远程访问的配置:
首先假定有两台机器A,B都装有mysql;我们想实现从B上访问到A的数据;
1.更改A的配置文件 sudo vi /etc/mysql/my.cnf
注释掉 bind-address = 127.0.0.1这一行(前面加#)
重启mysql服务
2.用root用户登录A的mysql
1) [root@etc etc]# mysql -u root -p
Enter password:
2)mysql> use mysql;
3)mysql> select host,user,password from user;(查看A上的用户设置)
4)grant all privileges on *.* to root@B的IP identified by 'password'(其中identified by 'password'可以省略则可以无密远程登录)(*.*意味着所有数据库的所有表)(配置任何机器都可以登录的话@后加'%')
3.尝试在B上登录A的mysql:mysql -h A的IP -u root -p(无密-p可以省略)
基本使用备注:
sudo /etc/init.d/mysql stop(start,restart)或者sudo service mysql stop..等启动关闭mysql服务
mysql -u bt_data -p;(以bt_data用户身份登录mysql,无密码则不需要-p)
python MySQLdb模块操作mysql示例:
#-*- encoding: utf-8 -*-
import os, sys, string
import MySQLdb
# 连接数据库
try:
conn = MySQLdb.connect(host='localhost',user='root',passwd='Bh123456',db='bt_data_testing')
print 'connection success'
except Exception, e:
print e
sys.exit()
# 获取cursor对象来进行操作
cursor = conn.cursor()
# 创建表
sql = "create table if not exists test1(name varchar(128) primary key, age int(4))"
cursor.execute(sql)
# 插入数据
sql = "insert into test1(name, age) values ('%s', %d)" % ("zhaowei", 23)
try:
cursor.execute(sql)
print 'insert success'
except Exception, e:
print e
sql = "insert into test1(name, age) values ('%s', %d)" % ("张三", 21)
try:
cursor.execute(sql)
except Exception, e:
print e
# 插入多条
sql = "insert into test1(name, age) values (%s, %s)"
val = (("李四", 24), ("王五", 25), ("洪六", 26))
try:
cursor.executemany(sql, val)
except Exception, e:
print e
#查询出数据
sql = "select * from test1"
cursor.execute(sql)
alldata = cursor.fetchall()
# 如果有数据返回,就循环输出, alldata是有个二维的列表
if alldata:
for rec in alldata:
print rec[0].decode('utf-8')
#注意commit,否则插入操作无效
conn.commit()
cursor.close()
conn.close()