Làm cách nào để khởi động máy chủ PostgreSQL trên Mac OS X?


989

CẬP NHẬT CUỐI CÙNG:

Tôi đã quên chạy initdblệnh.

</ CẬP NHẬT CUỐI CÙNG>

bằng cách chạy lệnh này

ps auxwww | grep postgres

Tôi thấy rằng postgres không chạy

> ps auxwww | grep postgres
remcat          1789   0.0  0.0  2434892    480 s000  R+   11:28PM   0:00.00 grep postgres

Điều này đặt ra câu hỏi: Làm thế nào để tôi khởi động máy chủ postgresql?

cập nhật:

>pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
server starting
sh: /usr/local/var/postgres/server.log: No such file or directory

cập nhật 2:

Cảm ứng không thành công nên tôi đã làm điều này thay vào đó:

> mkdir /usr/local/var/postgres
> vi /usr/local/var/postgres/server.log
> ls /usr/local/var/postgres/          
server.log

Nhưng khi tôi cố gắng khởi động máy chủ rails, tôi vẫn thấy điều này:

Is the server running on host "localhost" and accepting
TCP/IP connections on port 5432?

cập nhật 3:

> pg_ctl -D /usr/local/var/postgres status
pg_ctl: no server running

cập nhật 4:

Tôi thấy rằng KHÔNG CÓ pg_hba.conf (chỉ pg_hba.conf.sample) nên tôi đã sửa đổi mẫu và đổi tên nó (để loại bỏ .sample). Dưới đây là nội dung:

 # IPv4 local connections:
 host    all             all             127.0.0.1/32           trust
 # IPv6 local connections:
 host    all             all             ::1/128                trust

nhưng tôi không hiểu điều này:

> pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start     
server starting
> pg_ctl -D /usr/local/var/postgres status                                     
pg_ctl: no server running

cũng thế:

sudo find / -name postgresql.conf
find: /dev/fd/3: Not a directory
find: /dev/fd/4: Not a directory

cập nhật 5:

sudo pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
Password:
pg_ctl: cannot be run as root
Please log in (using, e.g., "su") as the (unprivileged) user that will own the server process.

cập nhật 6:

Điều này có vẻ kỳ lạ:

> egrep 'listen|port' /usr/local/var/postgres/postgresql.conf
egrep: /usr/local/var/postgres/postgresql.conf: No such file or directory

Mặc dù vậy, tôi đã làm điều này:

>sudo find / -name "*postgresql.conf*"
find: /dev/fd/3: Not a directory
find: /dev/fd/4: Not a directory
/usr/local/Cellar/postgresql/9.0.4/share/postgresql/postgresql.conf.sample
/usr/share/postgresql/postgresql.conf.sample

vì vậy tôi đã làm điều này:

egrep 'listen|port' /usr/local/Cellar/postgresql/9.0.4/share/postgresql/postgresql.conf.sample 
#listen_addresses = 'localhost'     # what IP address(es) to listen on;
#port = 5432                # (change requires restart)
                # supported by the operating system:
                #   %r = remote host and port

Vì vậy, tôi đã thử điều này:

> cp /usr/local/Cellar/postgresql/9.0.4/share/postgresql/postgresql.conf.sample /usr/local/Cellar/postgresql/9.0.4/share/postgresql/postgresql.conf        
> cp /usr/share/postgresql/postgresql.conf.sample /usr/share/postgresql/postgresql.conf 

vẫn nhận được cùng một "Máy chủ đang chạy?" thông điệp.


Làm thế nào bạn cài đặt Postgres? Bạn đã sử dụng một trình quản lý gói hoặc cài đặt thủ công?
James Allman

1
không thể nhớ chính xác nhưng nó đã được cài đặt hoặc tôi đã chạy "brew install postgres". Tôi nghiêng về phía sau nhưng một lần nữa, tôi không chắc chắn 100%.
Ramy

Sử dụng sudo, tức làsudo pg_ctl...
Bohemian

54
Tôi đã bình chọn điều này chỉ vì CẬP NHẬT CUỐI CÙNG khiến tôi cười rất nhiều! : D
pkoch

14
Phải upvote, tôi đến đây ít nhất 3 lần một tuần để sao chép lệnh pg_ctl đầu tiên để khởi động lại psql sau khi chấm dứt bất ngờ .. heh Tôi phải học nó: D Cảm ơn anh bạn!
lucygenik

Câu trả lời:


1848

Trình quản lý gói Homebrew bao gồm các trình khởi chạy tự động khởi động. Để biết thêm thông tin chạy brew info postgres.

Bắt đầu bằng tay:

pg_ctl -D /usr/local/var/postgres start

Dừng thủ công:

pg_ctl -D /usr/local/var/postgres stop

Bắt đầu tự động:

"Để có launchd bắt đầu postgresql ngay bây giờ và khởi động lại khi đăng nhập:"

brew services start postgresql


Kết quả của là pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log startgì?

Kết quả của là pg_ctl -D /usr/local/var/postgres statusgì?

Có bất kỳ thông báo lỗi trong server.log?

Đảm bảo các kết nối localhost tcp được bật trong pg_hba.conf:

# IPv4 local connections:
host    all             all             127.0.0.1/32            trust

Kiểm tra list_addresses và cổng trong postgresql.conf:

egrep 'listen|port' /usr/local/var/postgres/postgresql.conf

#listen_addresses = 'localhost'     # what IP address(es) to listen on;
#port = 5432                # (change requires restart)

Dọn dẹp

Postgres rất có thể được cài đặt thông qua Homebrew , Fink , MacPorts hoặc trình cài đặt EnterpriseDB .

Kiểm tra đầu ra của các lệnh sau để xác định trình quản lý gói được cài đặt với:

brew && brew list|grep postgres
fink && fink list|grep postgres
port && port installed|grep postgres

1
@Ramy Cảm ứng có thành công không? Kiểm tra sự tồn tại và quyền của / usr / local / var / postgresserver.log . Nó nên được rw cho userid của bạn.
James Allman

1
@Ramy: Bạn có thể bao gồm bất kỳ thông tin nào trong /usr/local/var/postgres/server.log không? Cài đặt của bạn có thể bị hỏng và có thể nhanh hơn để dọn dẹp và cài đặt lại bằng cách sử dụng một nguồn đã biết như Homebrew.
James Allman

10
Tại sao tất cả điều này là cần thiết? Tại sao bạn không thể bắt đầu postgres theo cách bạn bắt đầu nút?
Kinnard Hockenhull

32
Thật

3
Điều này vẫn hoạt động nhưng là một chút lỗi thời. Câu trả lời dưới đây brew services start postgresqllà một câu trả lời cập nhật hơn và đơn giản hơn.
mthorley

372

Nếu bạn muốn tự khởi động và dừng postgresql (được cài đặt qua homebrew), cách dễ nhất là:

brew services start postgresql

brew services stop postgresql

Nếu bạn có phiên bản cụ thể, hãy đảm bảo hậu tố của phiên bản, ví dụ:

brew services start postgresql@10

7
Tôi ước tôi biết brew servicessớm hơn ... đây là giải pháp duy nhất hiệu quả với tôi. <3 cảm ơn!
seanlinsley

5
brew tap gapple/servicessẽ làm cho lệnh dịch vụ sản xuất bia hoạt động trở lại
Fabian Leutolt

4
Có vẻ như brew tap homebrew/servicesvẫn hoạt động github.com/Homebrew/homebrew-service
kangkyu 16/07/2015

4
Điều này hoạt động sau khi initdb đã được chạy thành công. Nếu không nó âm thầm thất bại (nhưng dường như đã làm việc với các hiển thị dịch vụ như bắt đầu trong brew services list.
Dmitri

1
Tôi cần chạy brew services restart postgresql, vì bắt đầu db với pg_ctl hoặc brew services startnói "máy chủ khác có thể đang chạy" và dừng db với pg_ctl hung.
tomf

181

Tôi đã có vấn đề gần như chính xác và bạn đã trích dẫn lệnh initdb là cách khắc phục. Đây cũng là giải pháp cho tôi, nhưng tôi không thấy có ai đăng nó ở đây, vì vậy đối với những người đang tìm kiếm nó:

initdb /usr/local/var/postgres -E utf8

16
Điều này cũng làm việc với tôi, initdb nói với tôi rằng tôi đã cấu hình xong, vì vậy tôi đã xóa toàn bộ thư mục: "rm -rf / usr / local / var / postgres" chạy lại lệnh của bạn và máy chủ của tôi bây giờ đã chạy và chạy, cảm ơn nhiều
Jorge Sampayo

5
vâng tôi phải chạy rm -rf /usr/local/var/postgresvà sau đó điều này làm việc cho tôi
Lee McAlilly

2
Đây là những gì làm việc cho tôi là tốt. Trước initdb, tôi cũng phải tạo ra postgres dir ( chown _your username on your comp_ usr/local/var/postgres), sau đó là initdb. Sau đó, máy chủ sẽ tự động khởi động khi bạn khởi động lại (nếu bạn đã làm theo hướng dẫn của Homebrew cho việc đó) hoặc theo cách thủ công pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start.
septerr

2
Sau khi initdb(bao gồm xóa thư mục cũ nếu cần), brew services start postgresqlhoạt động
Dmitri

Nếu ý tưởng về rm -rfmọi thứ hiện có trong cơ sở dữ liệu của bạn làm bạn sợ một chút, thay vì xóa nó hoàn toàn, bạn có thể sử dụng một cái gì đó như mv /usr/local/var/postgres /usr/local/var/postgres.backupđể chuyển nó sang một thư mục sao lưu mới, sau đó chạy lệnh để khởi động lại cơ sở dữ liệu.
Hartley Brody

102

Nếu máy tính của bạn bị khởi động lại đột ngột

Trước tiên, bạn phải xóa tệp /usr/local/var/postgres/postmaster.pidSau đó, bạn có thể khởi động lại dịch vụ bằng một trong nhiều phương pháp được đề cập khác tùy thuộc vào cài đặt của bạn.

Bạn có thể xác minh điều này bằng cách xem nhật ký của Postgres để xem điều gì có thể xảy ra: tail -f /usr/local/var/postgres/server.log


2
Bạn có thể kiểm tra tail -f /usr/local/var/postgres/server.logxem bạn có nên xóa tập tin đó không. ref coderwall.com/p/zf-fww/ từ
user1448319

Của tôi đã ở dưới / Người dùng / <người dùng> / Thư viện / Ứng dụng \ Hỗ trợ / Postgres / var-9.6 / postmaster.pid
BatteryAcid

đối với cài đặt homebrew, đường dẫn là~/homebrew/var/postgres/postmaster.pid
blnc

2
Wow ... chỉ điều này làm việc cho tôi! Bạn có thể vui lòng giải thích chi tiết hơn tại sao chúng ta nên xóa postmaster.pidnếu máy tính bị khởi động lại đột ngột không?
adkl

1
Điều này thực sự hữu ích
NinComPoop

81

Một cách tiếp cận khác là sử dụng gemy (một trình bao bọc cho launchctl):

brew install postgresql
initdb /usr/local/var/postgres -E utf8
gem install lunchy

Để bắt đầu postgres:

lunchy start postgres

Để ngăn chặn postgres:

lunchy stop postgres

Để biết thêm thông tin, hãy tham khảo: " Cách cài đặt PostgreSQL trên máy Mac với Homebrew và bữa trưa "


tùy thuộc vào cách bạn thiết lập postgres, bạn có thể cần phải sử dụng postgresql thay vì postgres
Devon Kiss

72

Ở đây 2 xu của tôi: Tôi đã tạo một bí danh cho postgres pg_ctl và đặt nó vào .bash_profile (phiên bản postgresql của tôi là 9.2.4 và đường dẫn cơ sở dữ liệu là / L Library / PostgreQuery/9.2/data).

alias postgres.server="sudo -u postgres pg_ctl -D /Library/PostgreSQL/9.2/data"

Ra mắt nhà ga mới.

Và sau đó? Bạn có thể bắt đầu / dừng máy chủ postgresql của mình bằng cách này:

postgres.server start
postgres.server stop

Chỉ định thư mục dữ liệu với -D là chìa khóa ở đây
olore

3
Tôi liên tục nhận được "Vui lòng đăng nhập (sử dụng, ví dụ:" su ") với tư cách là người dùng (không có đặc quyền) sẽ sở hữu quy trình máy chủ." khi chạy chỉ cần sudo. +1
pyb

Cảm ơn. Các đề xuất của công cụ postgres để sử dụng su thất bại thảm hại. sudo -u hoạt động rực rỡ. (trên El Capitan)
uchuugaka

33

Cách sạch cho đến nay để bắt đầu / dừng / khởi động lại postgres nếu bạn đã cài đặt nó thông qua brewđược chỉ đơn giản là dỡ bỏ và / hoặc tải các tập tin cấu hình launchd mà đi kèm với quá trình cài đặt:

launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

Dòng đầu tiên sẽ dừng postgres và dòng thứ hai sẽ bắt đầu nó. Không cần chỉ định bất kỳ thư mục dữ liệu, vv vì mọi thứ đều nằm trong tệp đó.


hoạt động tuyệt vời cho PostgreSQL 9.5.3 được cài đặt trên OS X thông qua Brew !! cảm ơn!
jpswain

điều này hoạt động như một cơ duyên khi máy chủ postgres không tắt đúng cách và không chấp nhận các kết nối đến
Augusto Samamé Barrientos

5
Bản thân Homebrew có các hàm bao đơn giản cho các lệnh này, ví dụ: brew services start postgres(và dừng). Ném -vvào cuối và bạn có thể thấy những gì nó đang làm.
Đánh dấu Edington

28

Để khởi động máy chủ postgresql:

pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start

để kết thúc máy chủ postgresql:

pg_ctl -D /usr/local/var/postgres stop -s -m fast

Bạn cũng có thể tạo bí danh thông qua CLI để làm cho nó dễ dàng hơn:

alias pg-start='pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start'
alias pg-stop='pg_ctl -D /usr/local/var/postgres stop -s -m fast'

Với những cái này, bạn chỉ cần gõ "pg-start" để bắt đầu Postgres và "pg-stop" để tắt nó.


3
Tôi có lỗi pg_ctl: directory "/usr/local/var/postgres" is not a database cluster directorylàm thế nào để sửa lỗi này?
Rohman Masyhar

22

Đối với mục đích thử nghiệm, tôi nghĩ Ứng dụng PostgreSQL là lựa chọn tốt nhất!

Chạy một ứng dụng, và máy chủ hoạt động. Đóng ứng dụng và máy chủ ngừng hoạt động.

http://postgresapp.com/


9

khi bạn cài đặt postgresql bằng homebrew:

brew install postgres

ở cuối đầu ra, bạn sẽ thấy các phương thức này để khởi động máy chủ:

To have launchd start postgresql at login:
    ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents
Then to load postgresql now:
    launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
Or, if you don't want/need launchctl, you can just run:
    postgres -D /usr/local/var/postgres

Tôi nghĩ rằng đây là cách tốt nhất.

Bạn có thể thêm bí danh vào .profile để thuận tiện.


7

Đối với cơ sở dữ liệu kiểm tra dùng một lần nhanh, bạn có thể chạy máy chủ ở phía trước.

Khởi tạo cơ sở dữ liệu postgres mới trong một thư mục mới

mkdir db
initdb db -E utf8
createdb public

Khởi động máy chủ ở nền trước (ctrl-C để dừng máy chủ)

postgres -d db

Trong phiên shell khác, kết nối với máy chủ

psql -d public

Điều này có vẻ tuyệt vời nhưng đối với tôi không hoạt động - đó không phải là máy chủ đã chạy để thực hiện bước tạo. Khi tôi cố gắng bắt đầu phục vụ, nó nói rằng nó cần PGDATA hoặc tệp cấu hình, chưa tồn tại. Tôi đang thiếu gì?
szeitlin

7

Tôi có cùng một vấn đề và thực hiện tất cả các cập nhật từ bài viết đầu tiên. Nhưng sau khi kiểm tra tệp nhật ký:

/usr/local/var/postgres/server.log

Tôi thấy nguyên nhân thực sự:

FATAL:  data directory "/usr/local/var/postgres" has group or world access
DETAIL:  Permissions should be u=rwx (0700).

Sau khi thay đổi quyền trên thư mục này

chmod 0700 /usr/local/var/postgres

máy chủ postgres đã bắt đầu.

Kiểm tra tập tin nhật ký mọi lúc.


5

PostgreSQL được tích hợp trong Server.app có sẵn thông qua App Store trong Mountain Lion. Điều đó có nghĩa là nó đã được cấu hình và bạn chỉ cần khởi chạy nó, sau đó tạo người dùng và cơ sở dữ liệu.

Mẹo : Không bắt đầu với việc xác định $ PGDATA, v.v., hãy chọn vị trí tệp như hiện tại.

Bạn sẽ có tệp này: / L Library / Server / PostgreQuery / Config / org.postgresql.postgres.plist

Để bắt đầu:

sudo serveradmin start postgres

Quá trình bắt đầu với các đối số:

/Appluggest/Server.app/Contents/ServerRoot/usr/bin/postgres_real -D / Library / Server / PostgreQuery / Data -c lắng_addresses = 127.0.0.1, :: 1 -c log_connections = on -c log_directory = / PostgreQuery -c log_filename = PostgreQuery.log -c log_line_prefix =% t -c log_lock_wa_prefix =% t -c log_lock_waits = on -c log_statement = ddl -c log_collector = on -c unix_socket_dir

Bạn có thể sudo:

sudo -u _postgres psql template1

Hoặc kết nối:

psql -h localhost -U _postgres postgres

Bạn có thể tìm thấy thư mục dữ liệu, phiên bản, trạng thái đang chạy và vv

sudo serveradmin fullstatus postgres  

Không thể tìm thấy nhiều thứ khác cho thấy cách sử dụng Postgres tích hợp. Giúp tôi tìm lệnh serveradmin là tốt. Cảm ơn
Jason S

Chạy một dịch vụ như người dùng root (sudo) chắc chắn không phải là một ý tưởng tốt, ngay khi có vấn đề bảo mật, toàn bộ máy tính bị xâm phạm.
Carlos Barcelona

Postgresql không chạy bằng root mà là _postgres.
bbaassssiiee

5

Biến thể của câu trả lời này: https://stackoverflow.com/a/13103603/2394728

initdb `brew --prefix`/var/postgres/data -E utf8`` &&  pg_ctl -D /usr/local/var/postgres/data -l logfile start

Bạn nên thêm một liên kết đến câu trả lời bạn tham khảo.
Jeffrey Bosboom

Điều này rất hữu ích vì pg của tôi đang hoạt động tốt và đột nhiên nó ngừng hoạt động và không thể tìm thấy thư mục / var / postgres.
shinesecret

Ai đó có thể xin vui lòng nhận xét tại sao điều này là tốt hơn so với câu trả lời được liên kết? Như tôi thấy tôi đã được nâng cấp từ lần trước tôi gặp vấn đề tương tự tôi sẽ sử dụng nó vì không có lý do nào được đưa ra ở đây.
MCB

4

Đối với mục đích phát triển, một trong những cách đơn giản nhất là cài đặt Postgres.app từ trang web chính thức . Nó có thể được khởi động / dừng từ thư mục Ứng dụng hoặc sử dụng các lệnh sau trong terminal:

# start
open -a Postgres

# stop
killall Postgres
killall postgres

18
killallcó lẽ không phải là cách tốt nhất để dừng cơ sở dữ liệu
Risadinha

4
   # remove old database files (If there was any)
   $rm -rf /usr/local/var/postgres    # install the binary

    $ brew install postgresql

    # init it
    $ initdb /usr/local/var/postgres

    # start the postgres server
    $ postgres -D /usr/local/var/postgres

    # create your database
    $ createdb mydb


    # Access db.
    $ psql mydb
    psql (9.0.1)
    Type "help" for help.

4

Nếu bạn đã cài đặt bằng brew, lệnh dưới đây là đủ.

brew services restart postgresql

Và điều này đôi khi có thể không hoạt động, trong trường hợp dưới đây, hai lệnh chắc chắn sẽ hoạt động

rm /usr/local/var/postgres/postmaster.pid

pg_ctl -D /usr/local/var/postgres start

1

không có câu trả lời nào ở trên khắc phục được sự cố cho tôi mặc dù nhận được thông báo lỗi tương tự. Tôi đã có thể sao lưu và chạy phiên bản của mình bằng cách xóa tệp postmaster.pid đã bị khóa và không cho phép kết nối.


1

Đối với macports, chỉ cần sử dụng lệnh load / unload và tên cổng của máy chủ đang chạy:

sudo port load postgresql96-server
- or -
sudo port unload postgresql96-server

vì vậy bạn không cần phải nhớ vị trí của /Library/LaunchDaemons/org.macports.postgresql96.plisttập tin



1

Nếu bạn đã cài đặt Postgres bằng trình cài đặt EnterpriseDB thì những gì @Kenial đề xuất là cách thực hiện.

sudo -u postgres pg_ctl -D /Library/PostgreSQL/{version}/data start
sudo -u postgres pg_ctl -D /Library/PostgreSQL/{version}/data stop

1

đã làm việc cho tôi (macOS 10.13) sudo -u postgres /Library/PostgreSQL/9.6/bin/pg_ctl start -D /Library/PostgreSQL/9.6/data

hoặc đầu tiên cd /Library/PostgreSQL/9.6/bin/


1

$ brew upgrade postgres

sửa nó cho tôi

Điều đó, tất nhiên, sẽ nâng cấp phiên bản postgres của bạn và cập nhật / cài đặt bất kỳ phụ thuộc nào.

CẢNH BÁO: Làm điều này biết rằng phiên bản postgresql của bạn có thể sẽ thay đổi. Đối với tôi, đó không phải là một vấn đề lớn.


0

Đối với Mac / OSX, tôi thực sự thích LaunchRocket cho điều này và các dịch vụ nền khác mà tôi đã sử dụng trong quá trình phát triển.

https://github.com/jimbojsb/launchrocket

Trang web này có hướng dẫn tốt về cài đặt: http://macappstore.org/launchrocket/

Điều này cung cấp cho bạn một màn hình đẹp trong Tùy chọn hệ thống cho phép bạn khởi chạy, khởi động lại, root, khởi chạy khi đăng nhập.


0

Điều này làm việc cho tôi mọi lúc, lấy cảm hứng từ Craig Ringer:

brew install proctools
sudo pkill -u postgres

proctools bao gồm pkill. Nếu bạn không có Bia: https://brew.sh/



0

Có một số trường hợp cạnh có thể sẽ hữu ích cho ai đó:

Có tùy chọn, rằng bạn sẽ có postgres.pid chứa đầy một số PID. Nhưng nếu bạn khởi động lại máy của bạn và trước khi gửi lại sẽ quay trở lại, một số quy trình khác sẽ thực hiện điều đó. Nếu điều đó xảy ra, cả trạng thái pg_ctl và dịch vụ pha chế được hỏi về trạng thái postgres, sẽ cho bạn biết rằng đó là LÊN. Chỉ cần phụ trợ | grep và kiểm tra nếu nó thực sự bị hoãn


0

Homebrew là cách !!

Để bắt đầu dịch vụ:

brew services start postgresql   

Để liệt kê nó:

brew services list |grep postgres

dừng dịch vụ:

brew services stop postgresql 

0

Nếu bạn không cài đặt nó với brew và trực tiếp từ gói mac, thì điều này có hiệu quả với tôi đối với PostgreQuery 12 khi sử dụng tất cả các vị trí, biến mặc định, v.v.

$ sudo su postgres
bash-3.2$ /Library/PostgreSQL/12/bin/pg_ctl -D /Library/PostgreSQL/12/data/ stop

0

Tôi đã phải đối mặt với cùng một vấn đề. Đã thử tất cả các giải pháp này nhưng không có giải pháp nào hiệu quả.

Cuối cùng quản lý để làm cho nó hoạt động bằng cách thay đổi postgres HOST trong cài đặt Django từ localhostsang 127.0.0.1.

Chúc mừng nếu nó giúp.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.