it-swarm-vi.tech

Làm cách nào để sao chép bảng người dùng MySQL từ máy chủ này sang máy chủ khác?

Tôi đang thiết lập một máy chủ MySQL mới và tôi muốn cung cấp cho nó cùng một nhóm tên người dùng, máy chủ được phép và mật khẩu như một máy chủ hiện có (sẽ biến mất).

Nó có hoạt động không khi chỉ thực hiện kết xuất bảng người dùng và sau đó tải nó trên máy chủ mới?

Có cách nào tốt hơn thế không?

40
Agvorth
oldserver$ mysqldump mysql > mysql.sql
newserver$ mysql mysql < mysql.sql
newserver$ mysql 'flush privileges;'

Nên làm điều đó, hãy nhớ thêm -u $USER-p$PASSWORD theo yêu cầu

34
Dave Cheney

Tôi sẽ xem Bộ công cụ Percona. Mô tả của pt-show-grants công cụ nói lên tất cả ...

pt-show-grants trích xuất, đặt hàng và sau đó in tài trợ cho tài khoản người dùng MySQL.

Tại sao bạn muốn điều này? Có một số lý do.

Đầu tiên là dễ dàng sao chép người dùng từ máy chủ này sang máy chủ khác; bạn chỉ có thể trích xuất các khoản tài trợ từ máy chủ đầu tiên và dẫn đầu ra trực tiếp vào một máy chủ khác.

Việc sử dụng thứ hai là đặt các khoản tài trợ của bạn vào kiểm soát phiên bản ....

21
Aaron Bush

Trong khi một kết xuất của cơ sở dữ liệu mysql có thể sẽ hoạt động, theo kinh nghiệm của tôi, ghi lại đúng tất cả quyền truy cập và thiết lập lại với các câu lệnh GRANT tốt hơn nhiều. Có hai lợi ích khi làm theo cách này:

  1. Bạn sẽ hiểu bảo mật cơ sở dữ liệu của bạn và cách nó được thực hiện.
  2. Bạn sẽ nhận được để loại bỏ quyền truy cập không còn cần thiết.
14
staticsan

Câu trả lời được chấp nhận (sử dụng mysqldump để sao lưu bảng mysql.user) là một cách tiếp cận rất nguy hiểm nếu bạn đang di chuyển sang phiên bản máy chủ mới.

Tôi đã làm điều đó trong quá khứ (di chuyển người dùng từ Mysql 4 sang Mysql 5.1) và sau đó tôi gặp vấn đề khi cố gắng cấp hoặc sửa đổi các đặc quyền cho người dùng cơ sở dữ liệu của mình.

Điều này xảy ra bởi vì cấu trúc bảng mysql.users khác nhau giữa các phiên bản máy chủ mysql, như được giải thích ở đây:

https://dba.stackexchange.com/a/16441/18472

Vì vậy, hãy cẩn thận nếu bạn đang nâng cấp phiên bản máy chủ của mình. Một số gợi ý khác ở đây:

https://stackoverflow.com/a/13218162/710788

11
abu
11
Bruno Bronosky

mysqldump sẽ hoạt động, nhưng vì cơ sở dữ liệu mysql sử dụng ISAM, bạn chỉ có thể sao chép thư mục vào máy chủ mới. Bạn sẽ tìm thấy điều này ở những nơi khác nhau, nhưng vị trí phổ biến nhất cho cơ sở dữ liệu mysql sẽ là/var/lib/mysql/mysql. Hãy chắc chắn dừng mysql trên máy chủ mới, di chuyển thư mục cũ ra khỏi đường đi, sao chép thư mục và khởi động lại. Một ví dụ sử dụng các vị trí tiêu chuẩn làm gốc:

# /etc/init.d/mysqld stop
# cd /var/lib/mysql
# mv mysql ../mysql.backup
# rsync -a [email protected]:/var/lib/mysql/mysql .
# /etc/init.d/mysql start
5
Tim

thật đơn giản để chạy các lệnh cấp. Nó giống như

GRANT ALL trên cơ sở dữ liệu. Có thể "người dùng" @ "Máy chủ" được xác định bởi "mật khẩu"

vì thế

GRANT ALL trên cơ sở dữ liệu. * Đến "jack" @ "localhost" được xác định bởi "somepass"

2
Trausti Thor