Không thể khởi động máy chủ MySQL nếu tệp .sock bị thay đổi trong /etc/mysql/my.cnf


8

Tôi đã cài đặt máy chủ MySQL 5.5 trên Ubuntu 12.04. Tôi đang cố gắng khởi động máy chủ MySQL trên một tệp sock khác. Theo mặc định, MySQL chạy trên /var/run/mysqld/mysqld.sock.

Tôi đang cố gắng chạy cùng một máy chủ trên /var/run/mysqld/mysqld1.sock.

Đối với điều này, tôi đã thực hiện các thay đổi sau đây:

  1. Thay đổi thành /etc/mysql/my.cnf
[khách hàng]
    cổng = 3306
    ổ cắm = /var/run/mysqld/mysqld1.sock

[mysqld_safe]
    ổ cắm = /var/run/mysqld/mysqld1.sock
    tốt đẹp = 0

[mysqld]
    người dùng = mysql
    pid-file = /var/run/mysqld/mysqld.pid
    ** ổ cắm = /var/run/mysqld/mysqld1.sock**
    cổng = 3306
    dựair = / usr
    datadir = / var / lib / mysql
    tmpdir = / tmp
    lc-message-dir = / usr / share / mysql
  1. Tôi cũng đã thêm dòng sau vào /etc/apparmor.d/usr/sbin.mysqld

    /var/run/mysqld/mysqld1.sock w,

    /var/run/mysqld/mysqld[1-9[.sock w,

  2. Tôi cũng đã thay đổi quyền sở hữu cho thư mục / var / run / mysqld thành người dùng mysql.

    ls -lA / var / run / | grep mysqld

    drwxrwxrwx 2 mysql mysql 40 tháng 12 31 17:24 mysqld

Tuy nhiên, khi tôi cố gắng khởi động máy chủ MySQL, tôi gặp lỗi sau (Là người dùng root)

    $ mysqld - người dùng = mysql --verbose
    121231 18:40:56 [Lưu ý] Plugin 'LIÊN KẾT' bị vô hiệu hóa.
    121231 18:40:56 InnoDB: Heap bộ nhớ InnoDB bị vô hiệu hóa
    121231 18:40:56 InnoDB: Mutexes và rw_locks sử dụng các nguyên tử nguyên tử GCC
    121231 18:40:56 InnoDB: Bảng nén sử dụng zlib 1.2.3.4
    121231 18:40:56 InnoDB: Đang khởi tạo vùng đệm, kích thước = 128.0M
    121231 18:40:56 InnoDB: Đã hoàn thành khởi tạo vùng đệm
    121231 18:40:56 InnoDB: định dạng tệp được hỗ trợ cao nhất là Barracuda.
    121231 18:40:57 InnoDB: Chờ đợi các chủ đề nền bắt đầu
    121231 18:40:58 InnoDB: 1.1.8 đã bắt đầu; số thứ tự đăng nhập 1595685
    121231 18:40:58 [Lưu ý] Tên máy chủ (địa chỉ liên kết): '127.0.0.1'; cảng: 3306
    121231 18:40:58 [Lưu ý] - '127.0.0.1' phân giải thành '127.0.0.1';
    121231 18:40:58 [Lưu ý] Ổ cắm máy chủ được tạo trên IP: '127.0.0.1'.
   ** `121231 18:40:58 [LRI] Không thể khởi động máy chủ: Liên kết với ổ cắm unix: Quyền bị từ chối` **

    121231 18:40:58 [LRI] Bạn đã có máy chủ mysqld khác đang chạy trên ổ cắm chưa: 
    /var/run/mysqld/mysqld1.sock?
    121231 18:40:58 [LRI] Hủy bỏ **
    121231 18:40:58 InnoDB: Bắt đầu tắt máy ...
    121231 18:40:58 InnoDB: Hoàn thành tắt máy; số thứ tự đăng nhập 1595685
    121231 18:40:58 [Lưu ý] mysqld: Tắt máy hoàn tất

Nếu tôi khởi động máy chủ với tệp ổ cắm mặc định, tôi có thể khởi động máy chủ. Tôi đã googled về vấn đề này nhưng chỉ tìm thấy giải pháp cho thấy nó là vấn đề quyền. Tuy nhiên, các quyền có vẻ tốt. Một số người cho rằng AppArmor có thể là một nguyên nhân, nhưng tôi cũng đã kiểm tra điều đó - đoạn trích được dán ở trên.

Ai đó có thể cung cấp một số manh mối?

[BIÊN TẬP]

Tôi thấy đầu ra sau đây /var/log/syslog.

Ngày 2 tháng 1 12:09:34 khenveshp-lt mysqld: 130102 12:09:34 [Lưu ý] Plugin 'LIÊN KẾT' bị vô hiệu hóa.
Ngày 2 tháng 1 12:09:34 khenveshp-lt mysqld: 130102 12:09:34 InnoDB: Heap bộ nhớ InnoDB bị vô hiệu hóa
Ngày 2 tháng 1 12:09:34 Praveshp-lt mysqld: 130102 12:09:34 InnoDB: Mutexes và rw_locks sử dụng các nguyên tử xây dựng GCC
Ngày 2 tháng 1 12:09:34 khenveshp-lt mysqld: 130102 12:09:34 InnoDB: Bảng nén sử dụng zlib 1.2.3.4
Ngày 2 tháng 1 12:09:34 khenveshp-lt mysqld: 130102 12:09:34 InnoDB: Khởi tạo nhóm bộ đệm, kích thước = 128.0M
Ngày 2 tháng 1 12:09:34 khenveshp-lt mysqld: 130102 12:09:34 InnoDB: Đã hoàn thành khởi tạo vùng đệm
Ngày 2 tháng 1 12:09:34 khenveshp-lt mysqld: 130102 12:09:34 InnoDB: định dạng tệp được hỗ trợ cao nhất là Barracuda.
Ngày 2 tháng 1 12:09:35 khenveshp-lt mysqld: 130102 12:09:35 InnoDB: Chờ đợi các chủ đề nền bắt đầu
Ngày 2 tháng 1 12:09:36 khenveshp-lt mysqld: 130102 12:09:36 InnoDB: 1.1.8 đã bắt đầu; số thứ tự đăng nhập 1595685
Ngày 2 tháng 1 12:09:36 khenveshp-lt mysqld: 130102 12:09:36 [Lưu ý] Tên máy chủ của máy chủ (địa chỉ liên kết): '127.0.0.1'; cảng: 3307
Ngày 2 tháng 1 12:09:36 khenveshp-lt mysqld: 130102 12:09:36 [Lưu ý] - '127.0.0.1' giải quyết thành '127.0.0.1';
Ngày 2 tháng 1 12:09:36 khenveshp-lt mysqld: 130102 12:09:36 [Lưu ý] Ổ cắm máy chủ được tạo trên IP: '127.0.0.1'.
Ngày 2 tháng 1 12:09:36 khenveshp-lt mysqld: 130102 12:09:36 [LRI] Không thể khởi động máy chủ: Ràng buộc trên ổ cắm unix: Quyền bị từ chối
Ngày 2 tháng 1 12:09:36 khenveshp-lt mysqld: 130102 12:09:36 [LRI] Bạn đã có một máy chủ mysqld khác đang chạy trên socket: /var/run/mysqld/mysqld1.sock chưa?
Ngày 2 tháng 1 12:09:36 khenveshp-lt mysqld: 130102 12:09:36 [LRI] Hủy bỏ
Ngày 2 tháng 1 12:09:36 khenveshp-lt mysqld: 
Ngày 2 tháng 1 12:09:36 khenveshp-lt mysqld: 130102 12:09:36 InnoDB: Bắt đầu tắt máy ...
Ngày 2 tháng 1 12:09:36 kernelvvv "/run/mysqld/mysqld1.sock" pid = 7039 comm = "mysqld" Request_mask = "c" den_mask = "c" fsuid = 116 ouid = 116
Ngày 2 tháng 1 12:09:36 khenveshp-lt mysqld: 130102 12:09:36 InnoDB: Tắt máy hoàn tất; số thứ tự đăng nhập 1595685
Ngày 2 tháng 1 12:09:36 khenveshp-lt mysqld: 130102 12:09:36 [Lưu ý] / usr / sbin / mysqld: Tắt máy hoàn tất

Nó nói quyền bị từ chối, tuy nhiên tôi dường như đã đặt quyền.


1. Kiểm tra quyền trên /usr/local/mysql/tmp. Cần tối thiểu 775. 2. Quyền cho /var/lib/thư mục cơ sở dữ liệu mysql trong thư mục phải là mysql:root ( chown mysql:root mysql)
Rinzwind

1
Tôi đã kiểm tra các quyền và họ có vẻ ổn.
dùng117844

cũng kiểm tra /etc/apparmor.d/usr.sbin.mysqldCó một so sánh giữa phiên bản cũ và mới tại đây: bugs.launchpad.net/ubuntu/+source/mysql-5.1/+bug/876268/...
Rinzwind

Câu trả lời:


5

Bằng cách nhìn vào dòng này trong dòng sau trong nhật ký, có vẻ như Apparmor đang từ chối quyền truy cập.

Jan  2 12:09:36 praveshp-lt kernel: [ 7060.098580] type=1400 audit(1357108776.036:33):
     apparmor="DENIED" operation="mknod" parent=6702 profile="/usr/sbin/mysqld" 
     name="/run/mysqld/mysqld1.sock" pid=7039 comm="mysqld" requested_mask="c"
     denied_mask="c" fsuid=116 ouid=116

Để cho phép điều này, hãy thêm một tệp /etc/apparmor.d/local/usr.sbin.mysqldvới mục bên dưới và khởi động lại MySQL.

/var/run/mysqld/mysqld1.sock w,

Cảm ơn Rinzwind đã chỉ ra điều này.


Hà! : D Mất một chút tìm kiếm;)
Rinzwind

Tôi đã cải thiện câu trả lời của bạn để sử dụng thư mục thay đổi cục bộ của Apparmor. Bằng cách tránh một trong những quản lý gói của bạn, điều này ít có khả năng bị hỏng sau này khi thực hiện nâng cấp và như vậy.
gertvdijk
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.