12.31 CentOS常用數據庫安裝和python使用(MySQL, PostgreSQL)

PostgreSQL

  • 安裝並初始化PostgreSQL

安裝postgresql-server

<code>yum install postgresql-server postgresql-contrib/<code>

檢查安裝所在路勁

<code>[root@172-12-0-100 ~]# rpm -ql postgresql-server | grep setup/<code>
<code>/usr/bin/postgresql-setup/<code>

初始化數據庫

<code>postgresql-setup initdb/<code>

開啟服務並設置為自啟動

<code>systemctl start postgresql/<code>
<code>systemctl enable postgresql/<code>

查看當前版本並修改用戶密碼

<code>[root@172-12-0-100 share]# psql --version/<code>
<code>psql (PostgreSQL) 9.2.24/<code>
<code>[root@172-12-0-100 share]# su - postgres/<code>
<code>-bash-4.2$ psql -U postgres/<code>
<code>psql (9.2.24)/<code>
<code>Type "help" for help./<code>
<code>postgres=# ALTER USER postgres WITH PASSWORD '123456';/<code>
<code>postgres-#/<code>
<code>postgres-# \\q/<code>
<code>-bash-4.2$/<code>

開啟遠程訪問

缺省時,postgresql只接受主機本身發起的連接

<code>[root@172-12-0-100 data]# netstat -anlp | grep 5432/<code>
<code>tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN 20737/postgres/<code>
<code>tcp6 0 0 ::1:5432 :::* LISTEN 20737/postgres/<code>

修改監聽地址

<code>vim /var/lib/pgsql/data/postgresql.conf/<code>
<code>修改#listen_addresses = 'localhost' 為 listen_addresses='*'/<code>

配置文件的路徑可通過如下方式查找

CentOS常用數據庫安裝和python使用(MySQL, PostgreSQL)

配置信任連接

<code>vim /var/lib/pgsql/data/pg_hba.conf/<code>

CentOS常用數據庫安裝和python使用(MySQL, PostgreSQL)

重啟服務

<code>systemctl restart postgresql/<code>

檢查接口監聽情況

CentOS常用數據庫安裝和python使用(MySQL, PostgreSQL)

設置防火牆,允許用戶連接

<code>firewall-cmd --permanent --add-port=5432/tcp/<code>
<code>firewall-cmd –reload/<code>

創建新用戶和測試用數據庫

<code>[root@172-12-0-100 share]# su - postgres/<code>
<code>-bash-4.2$ psql -U postgres/<code>
<code>psql (9.2.24)/<code>
<code>Type "help" for help./<code>
<code>postgres=#/<code>

創建用戶:

<code>postgres=# create user admin with password '12345678';/<code>
<code>CREATE ROLE/<code>

創建測試用數據庫並指定擁有者,將數據庫所有權限賦予該擁有者

<code>postgres=# create database testdb owner admin;/<code>
<code>CREATE DATABASE/<code>
<code>postgres=#/<code>
<code>postgres=# grant all on database testdb to admin;/<code>
<code>GRANT/<code>

查看數據庫(\\l)

CentOS常用數據庫安裝和python使用(MySQL, PostgreSQL)

退出(\\q)

postgres=# \\q

-bash-4.2$ exit

Logout

使用python嘗試遠程連接postgresql

Python連接postgresql時,需要先安裝psycopg2

<code>pip install psycopg2/<code>

寫一個python腳本測試數據庫的連接情況

<code>## 導入psycopg2包/<code>
<code>import psycopg2/<code>
<code>## 連接到一個給定的數據庫/<code>
<code>conn = psycopg2.connect(database="testdb", user="admin",/<code>
<code> password="12345678", host="10.10.11.250", port="5432")/<code>
<code>## 建立遊標,用來執行數據庫操作/<code>
<code>cursor = conn.cursor()/<code>
<code>## 執行SQL命令/<code>
<code>cursor.execute("CREATE TABLE test_conn(id int, name text, addr text)")/<code>
<code>cursor.execute("INSERT INTO test_conn values(1,'Moses','Egypt')")/<code>
<code>cursor.execute("INSERT INTO test_conn values(2,'Joshua','Israel')")/<code>
<code>## 提交SQL命令/<code> 
<code>conn.commit()/<code>
<code>## 執行SQL SELECT命令/<code>
<code>cursor.execute("select * from test_conn")/<code>
<code>## 獲取SELECT返回的元組/<code>
<code>rows = cursor.fetchall()/<code>
<code>for row in rows:/<code>
<code> print('id = ',row[0], 'name = ', row[1], 'addr = ', row[2], '\\n')/<code>
<code>## 關閉遊標/<code>
<code>cursor.close()/<code>
<code>## 關閉數據庫連接/<code>
<code>conn.close()/<code>

MySQL

安裝並初始化mysql數據庫

當使用yum install mysql時,會直接安裝MariaDB。MySQL先後被Sun, Oracle收購, MySQL之父的Michael以他女兒Maria的名字開始了MySQL的另外一個衍生版本:MariaDB.

<code>yum install mariadb-server/<code>

查看服務啟動情況和端口監聽情況

systemctl status mariadb

CentOS常用數據庫安裝和python使用(MySQL, PostgreSQL)

監聽端口

CentOS常用數據庫安裝和python使用(MySQL, PostgreSQL)

也可以通過執行mysql後,通過show global variables like 'port'進行查詢

CentOS常用數據庫安裝和python使用(MySQL, PostgreSQL)

修改監聽端口

在配置文件/etc/my.cnf文件中,直接增加一行port=3309,重啟服務,即可將端口由缺省的3306修改為3309

CentOS常用數據庫安裝和python使用(MySQL, PostgreSQL)

重新加載服務

<code>systemctl restart mariadb/<code>

一些配置說明

<code>[mysqld]/<code>
<code>skip-networking=1 #不監聽任何網絡接口(即netstat看不到3306端口)/<code> 
<code>datadir=/var/lib/mysql #數據庫存放目錄/<code>

創建測試數據庫

<code>[root@172-12-0-100 ~]# mysql/<code>
<code>MariaDB [(none)]> create database testdb;/<code>
<code>--創建可遠程登錄的用戶/<code>
<code>create user 'admin'@'%' identified by '12345678';/<code>
<code>---授權該用戶對testdb的所有權限/<code>
<code>grant select,insert,delete,update,create,drop on testdb.* to 'admin'@'%' identified by '12345678';/<code>
<code>flush privileges;--立即啟用修改/<code>

如果創建錯了,可刪除該用戶

<code>DROPUSER'username'@'host';/<code>

放開防火牆端口:

<code>firewall-cmd --permanent  --add-port=3306/tcp/<code>
<code>firewall-cmd --reload/<code>

通過python遠程訪問Mysql數據庫

<code>pip install pymysql/<code>

腳本示例:

<code># 導入pymysql模塊/<code>
<code>import pymysql/<code>
<code># 連接database/<code>
<code>conn = pymysql.connect(host="10.10.11.250", user="admin", password="12345678",database="testdb",charset="utf8")/<code> 
<code># 得到一個可以執行SQL語句的光標對象/<code>
<code>cursor = conn.cursor()/<code>
<code># 創建表格/<code>
<code>sql = """/<code>
<code>CREATE TABLE USER1 (/<code>
<code>id INT auto_increment PRIMARY KEY ,/<code>
<code>name CHAR(10) NOT NULL UNIQUE,/<code>
<code>age TINYINT NOT NULL/<code>
<code>)ENGINE=innodb DEFAULT CHARSET=utf8;/<code>
<code>"""/<code>
<code># 執行SQL語句/<code>
<code>cursor.execute(sql)/<code>
<code>
<code>#插入數據/<code>
<code>sql = "INSERT INTO USER1(name, age) VALUES (%s, %s);"/<code>
<code>username = "Moses"/<code>
<code>age = 180/<code>
<code># 執行SQL語句/<code>
<code>cursor.execute(sql, [username, age])/<code>
<code># 提交事務/<code>
<code>conn.commit()/<code>
<code>username = "Joshua"/<code>
<code>age = 120/<code>
<code>cursor.execute(sql, [username, age])/<code>
<code>conn.commit()/<code>
<code>#查詢數據/<code>
<code>sql = "SELECT * from USER1;"/<code>
<code>cursor.execute(sql)/<code>
<code>results = cursor.fetchall()/<code>
<code>print(results)/<code>
<code># 關閉光標對象/<code>
<code>cursor.close()/<code>
<code># 關閉數據庫連接/<code>
<code>conn.close()/<code>


分享到:


相關文章: