Làm thế nào để kích hoạt đăng nhập MySQL?


36

Tôi đang chạy MySQL 5.0.45 trên OS X 10.6.1 và tôi không thể yêu cầu MySQL đăng nhập bất cứ thứ gì. Tôi đang gỡ lỗi một ứng dụng và cần xem tất cả các truy vấn và lỗi.

Tôi đã thêm vào etc / my.cnf:

[mysqld]
bind-address = 127.0.0.1
log = /var/log/mysqld.log
log-error = /var/log/mysqld.error.log

Tôi đã sử dụng sudo để tạo hai tệp nhật ký, đặt quyền thành 644, sau đó khởi động lại MySQL.

Tôi đã tham khảo Nhật ký mysql của tôi trên OS X ở đâu? để khắc phục sự cố.

Đang chạy:

ps auxww|grep [m]ysqld

Trả về:

_mysql      71   0.0  0.8   646996  15996   ??  S     7:31PM   0:01.10 /usr/local/mysql/libexec/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/var --pid-file=/usr/local/mysql/var/Macintosh-41.local.pid
_mysql      46   0.0  0.0   600336    744   ??  Ss    7:30PM   0:00.03 /bin/sh /usr/local/mysql/bin/mysqld_safe

Và chạy:

$(ps auxww|sed -n '/sed -n/d;/mysqld /{s/.* \([^ ]*mysqld\) .*/\1/;p;}') --verbose --help|grep '^log'

Trả về:

log                               /var/log/mysqld.log
log-bin                           (No default value)
log-bin-index                     (No default value)
log-bin-trust-function-creators   FALSE
log-bin-trust-routine-creators    FALSE
log-error                         /var/log/mysqld.error.log
log-isam                          myisam.log
log-queries-not-using-indexes     FALSE
log-short-format                  FALSE
log-slave-updates                 FALSE
log-slow-admin-statements         FALSE
log-slow-queries                  (No default value)
log-tc                            tc.log
log-tc-size                       24576
log-update                        (No default value)
log-warnings                      1

Đang chạy:

mysql> show variables like '%log%';

Trả về:

+---------------------------------+---------------------------+
| Variable_name                   | Value                     |
+---------------------------------+---------------------------+
| back_log                        | 50                        | 
| binlog_cache_size               | 32768                     | 
| expire_logs_days                | 0                         | 
| innodb_flush_log_at_trx_commit  | 1                         | 
| innodb_locks_unsafe_for_binlog  | OFF                       | 
| innodb_log_arch_dir             |                           | 
| innodb_log_archive              | OFF                       | 
| innodb_log_buffer_size          | 1048576                   | 
| innodb_log_file_size            | 5242880                   | 
| innodb_log_files_in_group       | 2                         | 
| innodb_log_group_home_dir       | ./                        | 
| innodb_mirrored_log_groups      | 1                         | 
| log                             | ON                        | 
| log_bin                         | OFF                       | 
| log_bin_trust_function_creators | OFF                       | 
| log_error                       | /var/log/mysqld.error.log | 
| log_queries_not_using_indexes   | OFF                       | 
| log_slave_updates               | OFF                       | 
| log_slow_queries                | OFF                       | 
| log_warnings                    | 1                         | 
| max_binlog_cache_size           | 4294967295                | 
| max_binlog_size                 | 1073741824                | 
| max_relay_log_size              | 0                         | 
| relay_log_purge                 | ON                        | 
| relay_log_space_limit           | 0                         | 
| sync_binlog                     | 0                         | 
+---------------------------------+---------------------------+
26 rows in set (0.00 sec)

Bất kỳ trợ giúp về làm thế nào tôi có thể có được MySQL để đăng nhập?

Câu trả lời:


23

Mặc dù bạn đã sử dụng chmod 644, hãy chắc chắn rằng mysql là chủ sở hữu của các bản ghi.

touch /var/log/mysql.log
chown mysql:mysql /var/log/mysql.log
touch /var/log/mysql.error.log
chown mysql:mysql /var/log/mysql.error.log

Tiếp theo, khởi động lại mysqld.

Sau đó, đăng nhập vào mysql và chạy:

mysql> show variables like '%log%';

Nhìn vào các giá trị cho general_log, general_log_file, log, log_errorvv

Bật chúng khi cần thiết và chạy tuôn ra mysqladmin khi cần thiết.


Bây giờ đăng nhập. Phải có sự giám sát sở hữu. Mặc dù, hãy xem câu hỏi đã chỉnh sửa của tôi để biết kết quả của truy vấn "hiển thị các biến như '% log%'". MySQL đang đăng nhập vào /var/log/mysql.log, vậy tại sao nó không hiển thị?
RyOnLife

13

Để kích hoạt các tệp nhật ký, bạn cần đảm bảo rằng một hoặc nhiều chỉ thị sau nằm trong [mysqld]phần cấu hình chính của máy chủ mysql ( /etc/my.cnfcủa tôi):

[mysqld]
log-bin
log
log-error
log-slow-queries

Theo mặc định, các nhật ký sẽ được tạo trong cùng thư mục dữ liệu chứa các thư mục con cơ sở dữ liệu (thông thường /var/lib/mysql) và tên tệp nhật ký mặc định với tên máy chủ theo sau là một hậu tố khớp với các tên chỉ thị ở trên (ví dụ: -bin, -slow truy vấn, vv).

Để giữ nhật ký của bạn trong một đường dẫn khác hoặc sử dụng các tên tệp khác nhau, hãy chỉ định tên cơ sở theo log=chỉ thị và bất kỳ đường dẫn và tên tệp nào bạn muốn, ví dụ:

[mysqld]
log-bin=/var/log/mysql-bin.log
log=/var/log/mysql.log
log-error=/var/log/mysql-error.log
log-slow-queries=/var/log/mysql-slowquery.log

Bạn cần khởi động lại mysqld để những thay đổi này có hiệu lực.


5

Các câu trả lời trước đã hết ngày. Bạn có thể xem tập tin cấu hình trong /etc/my.cnfhoặc trên windows ./mysql/my.ini.

Trong [mysqld]phần thêm

log_bin
general_log
log_error

Các tài liệu cho các cửa sổ nói rằng các bản ghi được lưu trữ trong ProgramData/MySQL/MySQL Server 5.6/. Mặc kệ nó vì đó là một lời nói dối.

Ngoài ra, logtùy chọn được đề xuất là khấu hao và dẫn đến lỗi

ambiguous option '--log' (log-bin, log_slave_updates)

đang đăng nhập ./mysql/data/host.errvà daemon âm thầm chết. Các thiết lập chính xác là general-log.

Cũng log-slow-querieskhông hợp lệ và gây ra lỗi

C:\mysql\bin\mysqld.exe: unknown option '--log-slow-queries'

Vì vậy, hãy chắc chắn để tránh xa điều đó cũng.


Cảm ơn bạn! Tôi không thể khởi động máy chủ với log=tùy chọn và có thể trong suốt cuộc đời tôi tìm hiểu tại sao. Cuối cùng cũng có người trả lời. general-log
jiveturkey

2

Nhập dòng lệnh mysql với siêu đặc quyền và thực hiện:

THIẾT LẬP GLOBAL general_log_file = '/var/log/mysql/mysql.log'; 

Trong trường hợp của tôi, không có vấn đề gì nếu tôi đã đặt biến này với cùng một giá trị! Ngoài ra, tôi đã thay đổi quyền và chủ sở hữu của tệp như được đề cập trong các bài viết khác.


1

Hãy thử các cài đặt nhật ký khác nhau trong my.cnf. Trong trường hợp của tôi, tôi cần:

general_log = on

general_log_file=/var/log/mysql/mysql.log
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.