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>
配置文件的路徑可通過如下方式查找
配置信任連接
<code>vim /var/lib/pgsql/data/pg_hba.conf/<code>
重啟服務
<code>systemctl restart postgresql/<code>
檢查接口監聽情況
設置防火牆,允許用戶連接
<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)
退出(\\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
監聽端口
也可以通過執行mysql後,通過show global variables like 'port'進行查詢
修改監聽端口
在配置文件/etc/my.cnf文件中,直接增加一行port=3309,重啟服務,即可將端口由缺省的3306修改為3309
重新加載服務
<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>
閱讀更多 WindWu 的文章