我已经在Ubuntu 12.04上安装了MySQL服务器5.5。我正在尝试在其他袜子文件上启动MySQL服务器。默认情况下,MySQL在/var/run/mysqld/mysqld.sock上运行。
我试图在/var/run/mysqld/mysqld1.sock上运行同一服务器。
为此,我进行了以下更改:
- 对/etc/mysql/my.cnf的更改
[客户] 端口= 3306 套接字= /var/run/mysqld/mysqld1.sock [mysqld_safe] 套接字= /var/run/mysqld/mysqld1.sock 好= 0 [mysqld] 用户= MySQL pid文件= /var/run/mysqld/mysqld.pid **套接字= /var/run/mysqld/mysqld1.sock** 端口= 3306 basedir = / usr datadir = / var / lib / mysql tmpdir = / tmp lc-messages-dir = / usr / share / mysql
我还将以下行添加到/etc/apparmor.d/usr/sbin.mysqld
/var/run/mysqld/mysqld1.sock w,
/var/run/mysqld/mysqld[1-9].sock w,
我还将目录/ var / run / mysqld的所有权更改为mysql用户。
ls -lA / var / run / | grep mysqld
drwxrwxrwx 2 mysql mysql 40 Dec 31 17:24 mysqld
但是,当我尝试启动MySQL服务器时,出现以下错误(以root用户身份)
$ mysqld --user = mysql --verbose 121231 18:40:56 [注意]插件“ FEDERATED”已禁用。 121231 18:40:56 InnoDB:InnoDB内存堆已禁用 121231 18:40:56 InnoDB:互斥体和rw_locks使用GCC原子内置函数 121231 18:40:56 InnoDB:压缩表使用zlib 1.2.3.4 121231 18:40:56 InnoDB:初始化缓冲池,大小= 128.0M 121231 18:40:56 InnoDB:缓冲池的完成初始化 121231 18:40:56 InnoDB:支持的最高文件格式是梭子鱼。 121231 18:40:57 InnoDB:等待后台线程启动 121231 18:40:58 InnoDB:1.1.8开始; 日志序列号1595685 121231 18:40:58 [注意]服务器主机名(绑定地址):'127.0.0.1'; 端口:3306 121231 18:40:58 [注意]-“ 127.0.0.1”解析为“ 127.0.0.1”; 121231 18:40:58 [注意]在IP:“ 127.0.0.1”上创建的服务器套接字。 **`121231 18:40:58 [错误]无法启动服务器:在Unix套接字上绑定:权限被拒绝** 121231 18:40:58 [错误]您是否已经在套接字上运行了另一个mysqld服务器: /var/run/mysqld/mysqld1.sock吗? 121231 18:40:58 [错误]中止** 121231 18:40:58 InnoDB:正在启动关机... 121231 18:40:58 InnoDB:关闭已完成;日志序列号1595685 121231 18:40:58 [注意] mysqld:关闭完成
如果使用默认的套接字文件启动服务器,则可以启动服务器。我在Google上搜索了此问题,但仅找到建议它为权限问题的解决方案。但是权限似乎很好。有人建议AppArmor可能是一个原因,但我也检查过-上面粘贴了代码段。
有人可以提供一些线索吗?
[编辑]
我在中看到以下输出/var/log/syslog
。
1月2日12:09:34 praveshp-lt mysqld:130102 12:09:34 [注意]插件'FEDERATED'已禁用。 1月2日12:09:34 praveshp-lt mysqld:130102 12:09:34 InnoDB:InnoDB内存堆已禁用 1月2日12:09:34 praveshp-lt mysqld:130102 12:09:34 InnoDB:互斥体和rw_locks使用GCC原子内置函数 1月2日12:09:34 praveshp-lt mysqld:130102 12:09:34 InnoDB:压缩表使用zlib 1.2.3.4 1月2日12:09:34 praveshp-lt mysqld:130102 12:09:34 InnoDB:正在初始化缓冲池,大小= 128.0M 1月2日12:09:34 praveshp-lt mysqld:130102 12:09:34 InnoDB:完成缓冲池的初始化 1月2日12:09:34 praveshp-lt mysqld:130102 12:09:34 InnoDB:支持的最高文件格式是梭子鱼。 1月2日12:09:35 praveshp-lt mysqld:130102 12:09:35 InnoDB:等待后台线程启动 1月2日12:09:36 praveshp-lt mysqld:130102 12:09:36 InnoDB:1.1.8已启动; 日志序列号1595685 1月2日12:09:36 praveshp-lt mysqld:130102 12:09:36 [注意]服务器主机名(绑定地址):'127.0.0.1'; 端口:3307 1月2日12:09:36 praveshp-lt mysqld:130102 12:09:36 [注意]-'127.0.0.1'解析为'127.0.0.1'; 1月2日12:09:36 praveshp-lt mysqld:130102 12:09:36 [注意]在IP:'127.0.0.1'上创建的服务器套接字。 1月2日12:09:36 praveshp-lt mysqld:130102 12:09:36 [错误]无法启动服务器:在Unix套接字上绑定:权限被拒绝 1月2日12:09:36 praveshp-lt mysqld:130102 12:09:36 [错误]您是否已经在套接字上运行了另一个mysqld服务器:/var/run/mysqld/mysqld1.sock? 1月2日12:09:36 praveshp-lt mysqld:130102 12:09:36 [错误]中止 1月2日12:09:36 praveshp-lt mysqld: 1月2日12:09:36 praveshp-lt mysqld:130102 12:09:36 InnoDB:正在启动关机... 1月2日12:09:36 praveshp-lt内核:[7060.098580]类型= 1400审核(1357108776.036:33):apparmor =“ DENIED” operation =“ mknod” parent = 6702 profile =“ / usr / sbin / mysqld” name = “ /run/mysqld/mysqld1.sock” pid = 7039 comm =“ mysqld” request_mask =“ c” reject_mask =“ c” fsuid = 116 ouid = 116 1月2日12:09:36 praveshp-lt mysqld:130102 12:09:36 InnoDB:关闭已完成;日志序列号1595685 1月2日12:09:36 praveshp-lt mysqld:130102 12:09:36 [注意] / usr / sbin / mysqld:关闭完成
它说权限被拒绝,但是我似乎已经设置了正确的权限。
我检查了权限,它们似乎很好。
—
user117844
还要检查
—
Rinzwind
/etc/apparmor.d/usr.sbin.mysqld
有新旧版本之间的比较,在这里:bugs.launchpad.net/ubuntu/+source/mysql-5.1/+bug/876268/...
/usr/local/mysql
和的权限/tmp
。至少需要为775。2./var/lib/
文件夹下的mysql数据库目录的权限应为mysql:root
(chown mysql:root mysql
)