Câu trả lời:
Ba (3) Tùy chọn
TÙY CHỌN 1: Từ trong máy khách mysql
mysql -uroot -A -e"SHOW GLOBAL VARIABLES;" > MySQLCurrentSettings.txt
Điều này sẽ nắm bắt tất cả các tùy chọn vào tập tin văn bản.
TÙY CHỌN 2: Từ dòng lệnh Linux
ps -ef | grep mysqld | grep -v grep
Điều này sẽ hiển thị các tùy chọn mysqld bắt đầu với như được đặt từ mysqld_safe
TÙY CHỌN 3: Hỏi trực tiếp máy chủ
mysqld --help --verbose
Ở dưới cùng của màn hình 'mysqld --help --verbose', bạn sẽ thấy các cài đặt hiện tại mysqld được tải từ my.cnf hoặc được mặc định.
Các hướng dẫn này dành cho stock mariadb trên centos 7.1.
Dưới đây là cách sao lưu hoặc sao chép các cài đặt hiện tại của máy sang cài đặt mới, hiện tại hoặc tương lai.
Trên máy mà chúng tôi muốn sao chép cài đặt, chúng tôi có thể chạy:
/usr/libexec/mysqld --help --verbose > mysql_current_settings.txt
Trên một máy khác, chúng ta có thể cài đặt mariadb-server và chạy:
/usr/libexec/mysqld --help --verbose > mysql_default_settings.txt
Sau đó, chúng tôi đặt cả hai tệp vào một thư mục, trong ví dụ này là "/ a /".
Sau đó, chúng tôi chạy:
comm -3 <(sort /a/mysql_current_settings.txt) <(sort /a/mysql_default_settings.txt)
Nếu không có đầu ra, thì hai tệp giống hệt nhau. Điều đó có nghĩa là tất cả các cài đặt, trên cả hai máy, đều ở mặc định.
Nếu có một số đầu ra, thì một số dòng sẽ không được thụt lề, trong khi một số dòng sẽ được thụt lề.
Các dòng không thụt lề chỉ xuất hiện trong tệp đầu tiên, ở đây là /a/mysql_civerse_sinstall.txt.
Các dòng thụt chỉ hiện diện trong tệp thứ hai, ở đây là /a/mysql_default_sinstall.txt.
Bây giờ chúng tôi biết tất cả các cài đặt, ngoại trừ một số cài đặt được đặt trong dòng lệnh bắt đầu mysqld. Các cài đặt này có thể đến từ các tập tin /etc/my.cnf hoặc /etc/my.cnf.d/* hoặc tập lệnh tùy chỉnh hoặc bí danh, v.v. Trong mọi trường hợp, chúng ta có thể thấy chúng bằng lệnh sau:
ps -ef | grep mysqld
Bây giờ chúng tôi biết rất ít cài đặt mà chúng tôi phải thay đổi trên bản cài đặt mới để định cấu hình cài đặt cũ.
Dưới đây làm theo một số chi tiết khác.
Trên centos 7.1, lệnh sau hiển thị tất cả các cài đặt hiện tại, ngoại trừ một số cài đặt được đặt trong dòng lệnh bắt đầu mysqld:
/usr/libexec/mysqld --help --verbose
Tổng cộng, nó cho thấy:
trong phần đầu tiên, các cài đặt mà chúng ta có thể sử dụng làm tham số đầu tiên sau "mysqld" khi chúng ta khởi động nó;
trong phần thứ hai, các cài đặt được đặt ở thời gian biên dịch;
trong phần thứ ba, các thiết lập hiện tại.
Ngay cả khi dòng cuối cùng của đầu ra nói: để xem giá trị nào mà máy chủ MySQL đang chạy đang sử dụng, hãy nhập:
mysqladmin variables -uroot -p
lệnh đó không hiển thị, fe, địa chỉ liên kết, ngay cả khi chúng ta thay đổi nó trong /etc/my.cnf và khởi động lại mysql.
Ngoài ra lệnh sau đây cho thấy nhiều cài đặt nhưng không phải là "địa chỉ liên kết":
mysql -uroot -p -e"SHOW VARIABLES;"
Lưu ý rằng, trên centos 7.1, mysqld không có trong $ PATH.
Đây là cách yêu thích của tôi để tạo một my.cnf hiện tại:
{ echo -e "# MYSQL VARIABLES {{{1\n##\n# MYSQL `mysql -V|sed 's,^.*\(V.*\)\, for.*,\1,'` - By: `logname`@`hostname -f` on `date +%c`\n##"; for l in {a..z}; do echo '#'; mysql -NBe "SHOW GLOBAL VARIABLES LIKE '${l}%'" | sed 's,\t,^= ,' | column -ts^ | tr "\n" '@' | eval $(echo "sed '" "s,@\("{a..u}{a..z}"\),\n\n\1,;" "'") | eval $(echo "sed '" "s,@\(innodb_"{a..z}{a..z}"\),\n\n\1,;" "'") | tr '@' "\n" | sed 's,^,# ,g'; done; echo -e "#\n##\n# MYSQL VARIABLES }}}1"; } | tee ~/mysql-variables.log
Tuy nhiên, điều này không hoạt động đáng tin cậy cho Mac OS X.
Điều này sẽ xuất ra một nhật ký biến sạch, nhận xét, sẵn sàng để nhập vào my.cnf của bạn.
Nguồn gốc: http://www.askapache.com/mysql/view-mysql-variables-my-cnf.html
mysqld -V|sed 's,^.*\(V.*\)\ for.*,\1,'
. Không chắc nó có vấn đề gì vì tôi nghĩ cả máy khách và máy chủ đều được cài đặt cùng nhau. Mục đích của {{{1
và là 1}}}
gì?