Ⅰ 如何在CentOS 7/6.5/6.4 下安裝PostgreSQL 9.3 與 phpPgAdmin
1.安裝PostgreSQL
首先根據你的伺服器架構添加PostgreSQL庫:
使用以下命令來更新庫:
yum update
使用以下命令來安裝PostgreSQL:
yum install postgresql93-server postgresql93-contrib
使用以下命令來初始化PostgreSQL資料庫:
在CentOS 6.x 系統中:
service postgresql-9.3 initdb
在CentOS 7系統中:
/usr/pgsql-9.3/bin/postgresql93-setup initdb
然後啟動PostgreSQL服務並使之開機自啟:
在CentOS 6.x 系統中:
service postgresql-9.3 start
chkconfig postgresql-9.3 on
在CentOS 7系統中:
systemctl enable postgresql-9.3
systemctl start postgresql-9.3
2.調整Iptables/Firewall
接下來調整防火牆出站規則:
在CentOS 6.x系統中:
vi /etc/sysconfig/iptables
並添加以下行
-A INPUT -m state --state NEW -m tcp -p tcp --dport 5432 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
退出並保存文件。重啟iptables服務:
service iptables restart
在CentOS系統中:
firewall-cmd --permanent –add-port=5432/tcp
firewall-cmd --permanent –add-port=80/tcp
firewall-cmd --reload
3.訪問PostgreSQL常用的命令提示符
默認情況下資料庫名和用戶名都是postgres。切換至用戶以執行相關操作:
su – postgres
輸入以下命令登陸:
psql
會有以下樣例輸出:
psql (9.3.5)
Type "help" for help.
Postgres=#
可通過輸入q退出postgresql返回命令終端:
4.設置用戶密碼
登陸至postgres命令提示符界面
su – postgres
psql
然後使用命令設置密碼
postgres=# password postgres
Enter new password:
Enter it again:
postgres=# q
輸入命令以建立PostgreSQL系統管理工具
postgres=# CREATE EXTENSION adminpack;
CREATE EXTENSION
5.創建用戶和資料庫
例如:用戶名:senthil 密碼:centos 資料庫名:mydb
轉到postgres用戶
su – postgres
創建用戶senthil
$ createuser senthil
創建資料庫
$ createdb mydb
現在登陸至psql提示符界面,為用戶senthil設置密碼及授權對資料庫mydb的訪問:
$ psql
psql (9.3.5)
Type "help" for help.
postgres=# alter user senthil with encrypted password 'centos';
ALTER ROLE
postgres=# grant all privileges on database mydb to senthil;
GRANT
postgres=#
6.刪除用戶和資料庫
首先轉到postgres界面
su – postgres
輸入命令
$ dropdb <database-name>
刪除用戶名可輸入
$ dropuser <user-name>
7.配置PostgreSQL-MD5認證
MD5認證需要客戶端提供一個MD5-encrypted 密碼以便身份驗證。你需要編輯 /var/lib/pgsql/9.3/data/pg_hba.conf文件:
vi /var/lib/pgsql/9.3/data/pg_hba.conf
添加或修改的行如下:
[...]
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all md5
# IPv4 local connections:
host all all 127.0.0.1/32 md5
host all all 192.168.1.0/24 md5
# IPv6 local connections:
host all all ::1/128 md5
[...]
重啟postgresql服務以應用更改
在CentOS 6.x系統中
service postgresql-9.3 restart
在CentOS 7系統中
systemctl restart postgresql-9.3
8.配置PostgreSQL-Configure TCP/IP
默認情況下,TCP/IP連接是不可行的,所以其他計算機用戶不能連接到postgresql。編輯文件 /var/lib/pgsql/9.3/data/postgresql.conf可以允許連接:
vi /var/lib/pgsql/9.3/data/postgresql.conf
找到下面的行:
[...]
#listen_addresses = 'localhost』
[...]
#port = 5432
[...]
把兩行都取消並設置為你的postgresql伺服器IP地址或設置為「*」監聽所有客戶端。如下所示:
listen_addresses = '*'
port = 5432
重啟以應用更改
在CentOS6.x系統中:
/etc/init.d/postgresql-9.3 restart
在CentOS7系統中:
systemctl restart postgresql-9.3
9.使用phpPgAdmin管理PostgreSQL
phpPgAdmin是使用PHP編寫的基於web的管理工具,用於管理PostgreSQL。它只適用與PostgreSQL RPM庫。
Ⅱ php pdo 鏈接各個資料庫的dsn分別是什麼
sql server:
sqlsrv:Server=localhost;Database=testdb
db2:
odbc:SAMPLE
Informix:
informix:host=host.domain.com; service=9800; database=common_db; server=ids_server; protocol=onsoctcp; EnableScrollableCursors=1
Sybase:
dblib:host=$hostname:$port;dbname=$dbname
PostgreSQL:
pgsql:host=localhost;port=5432;dbname=testdb;user=bruce;password=mypass
Access:
DB_DSN'=>"odbc:DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" . getcwd(). "\\Database\\db.mdb
ps: 是這樣的,先去搜索目前都有哪些資料庫,然後再搜索 php pdo 資料庫名 dsn 即可。
Ⅲ php如何鏈接mysql
在能夠訪問並處理資料庫中的數據之前,必須創建到達資料庫的連接。
在 PHP 中,這個任務通過 mysql_connect() 函數完成。
工具原料:電腦+php+mysql
php鏈接mysql的方法如下:
方法一、
先做出如下假設(也適用與方法二和方法三)
$username=your_name;
$userpass=your_pass;
$dbhost=localhost;
$dbdatabase=your_database;
//生成一個連接
$db_connect=mysql_connect($dbhost,$username,$userpass) or die("Unable to connect to the MySQL!");
//選擇一個需要操作的資料庫
mysql_select_db($dbdatabase,$db_connect);
//執行MySQL語句
$result=mysql_query("SELECT id,name FROM user");
//提取數據
$row=mysql_fetch_row($result);
注意事項:代碼注釋已經說明了一切。不過這里還需要做一些補充。
①在mysql_connect()、mysql_select_db()等函數之前使用@(錯誤控制運算符),可以忽略掉系統產生的錯誤信息,然後用die()來自定義錯誤信息;
②提取數據的時候,除了上面的mysql_fetch_row,常見的還有mysql_fetch_assoc和mysql_fetch_array,具體差別請查閱PHP Manual;
③對於mysql_query()函數的返回值,如果執行的語句有返回值(如SELECT、SHOW、DESCRIBE等),則返回相應數據(成功時)或FALSE(失敗時);如果執行的語句沒有返回值(如DELETE、DROP、INSERT、UPDATE等),則返回TRUE(成功時)或FALSE(失敗時)。
方法二、面向對象
其實這種方法和普通方法非常類似,只是把相應的函數換成了面向對象方法,直接看代碼。
$db=new mysqli($dbhost,$username,$userpass,$dbdatabase);
if(mysqli_connect_error()){
echo 'Could not connect to database.';
exit;
}
$result=$db->query("SELECT id,name FROM user");
$row=$result->fetch_row();
這里用到的是mysqli,意思就是mysql的擴展,既可以通過面向過程的方式也可以通過面向對象的方式與資料庫進行交互,唯一不同的是調用函數(對象方法)的方式不一樣。
方法三、PDO方法
PDO其實是PHP Database Objects的縮寫,中文即PHP資料庫對象。它提供了一種統一的PHP與資料庫交互的方法。
這是目前流行的一種連接資料庫的方法。它的優勢在於:只要正確提供數據源,餘下對於資料庫的基本操作都是一樣的。也就是說,同一段代碼既可以同MySQL交互,也可以和SQLite3交互,當然也可以和PostgreSQL進行交互,前提是你提供了正確的數據源。下面看一下連接MySQL的代碼:
$dsn='mysql:host='.$dbhost.';dbname='.$dbdatabase.';'
$dbh=new PDO($dsn,$username,$userpass);
如果是SQLite3,直接使用下面的代碼:
$dsn='sqlite3:"C:sqliteuser.db"';
$dbh=new PDO($dsn);
如果是PostgreSQL,下面的代碼能夠對付:
$dsn='pgsql:host='.$dbhost.' port=5432 dbname='.$dbdatabase.' user='.$username.' password='.$userpass;
$dbh=new PDO($dsn);
跟資料庫成功建立連接之後,下面就只需要從資料庫獲取數據或插入更新數據,實例代碼如下:
$stmt=$dbh->query('SELECT id,name FROM user');
$row=$stmt->fetch();
綜上所述有三種方法鏈接mysql
Ⅳ 烽火狼煙丨PHP遠程代碼執行漏洞(CVE-2022-31625、CVE-2022-31626)風險提示
PHP官方已發布關於存在遠程代碼執行漏洞的通告,漏洞編號為CVE-2022-31625、CVE-2022-31626。CVE-2022-31625漏洞是由於PHP_FUNCTION中分配在堆上的數組清除不及時,錯誤調用php_pgsql_free_params()函數可能導致遠程代碼執行。CVE-2022-31626漏洞源於PHP的mysqlnd拓展堆緩沖區溢出,攻擊者通過誘導主機以mysqlnd主動連接惡意伺服器,實現緩沖區溢出並執行遠程代碼,影響包括Adminer、PHPmyAdmin在內的基於php的資料庫管理軟體。WebRAY安全服務產品線建議用戶採取防護措施並升級到最新版本。PHP是一種多用途開源腳本語言,用於Web開發和嵌入HTML。WebRAY將持續關注該漏洞,提供最新信息。此漏洞風險評級為高危。官方已發布安全版本,建議用戶及時下載更新。盛邦安全成立於2010年,是國內領先的網路安全產品及服務供應商,專注於網路空間地圖、業務安全、供應鏈安全、應用防禦和脆弱性檢測領域。