首页 文章

无法启动MySql服务

提问于
浏览
9

当我运行命令

mysql -u root -p

我收到了一个错误

ERROR 2002(HY000):无法通过套接字'/var/run/mysqld/mysqld.sock'连接到本地MySQL服务器(2)

当我尝试运行mysql服务时

service mysql start

它会随着消息而超时

mysql.service的作业失败,因为超时超时 . 有关详细信息,请参阅“systemctl status mysql.service”和“journalctl -xe” .

日志

Jan 08 23:44:48 monal-Lenovo-IdeaPad-Z510审核[30814]:AVC apparmor =“DENIED”operation =“open”profile =“/ usr / sbin / mysqld”name =“/ sys / devices / system / node /“pid = 30814 comm =”mysqld“requested_mask =”r“denied_mask =”r“fsuid = 123 ouid = 0
1月08日23:44:48 monal-Lenovo-IdeaPad-Z510审核[30814]:AVC apparmor =“DENIED”operation =“open”profile =“/ usr / sbin / mysqld”name =“/ proc / 30814 / status” pid = 30814 comm =“mysqld”requested_mask =“r”denied_mask =“r”fsuid = 123 ouid = 123
1月08日23:44:48 monal-Lenovo-IdeaPad-Z510审核[30814]:AVC apparmor =“DENIED”operation =“open”profile =“/ usr / sbin / mysqld”name =“/ usr / my.cnf” pid = 30814 comm =“mysqld”requested_mask =“r”denied_mask =“r”fsuid = 123 ouid = 0
1月08日23:44:48 monal-Lenovo-IdeaPad-Z510内核:audit:type = 1400 audit(1483899288.523:210):apparmor =“DENIED”operation =“open”profile =“/ usr / sbin / mysqld”name = “/ proc / 30814 / status”pid = 30814 comm =“mysqld”requested_mask =“r”denied_mask =“r”fsuid = 123 ouid = 123
1月08日23:44:48 monal-Lenovo-IdeaPad-Z510内核:audit:type = 1400 audit(1483899288.523:211):apparmor =“DENIED”operation =“open”profile =“/ usr / sbin / mysqld”name = “/ sys / devices / system / node /”pid = 30814 comm =“mysqld”requested_mask =“r”denied_mask =“r”fsuid = 123 ouid = 0
1月08日23:44:48 monal-Lenovo-IdeaPad-Z510内核:audit:type = 1400 audit(1483899288.523:212):apparmor =“DENIED”operation =“open”profile =“/ usr / sbin / mysqld”name = “/ proc / 30814 / status”pid = 30814 comm =“mysqld”requested_mask =“r”denied_mask =“r”fsuid = 123 ouid = 123
1月08日23:44:48 monal-Lenovo-IdeaPad-Z510内核:audit:type = 1400 audit(1483899288.523:213):apparmor =“DENIED”operation =“open”profile =“/ usr / sbin / mysqld”name = “/usr/my.cnf”pid = 30814 comm =“mysqld”requested_mask =“r”denied_mask =“r”fsuid = 123 ouid = 0
1月08日23:44:48 monal-Lenovo-IdeaPad-Z510 mysqld_safe [30539]:170108 23:44:48来自pid文件/var/run/mysqld/mysqld.pid的mysqld_safe mysqld已结束
1月08日23:45:01 monal-Lenovo-IdeaPad-Z510 CRON [30867]:pam_unix(cron:session):为用户root打开的会话(uid = 0)
1月08日23:45:01 monal-Lenovo-IdeaPad-Z510 CRON [30868] :( root)CMD(命令-v debian-sa1> / dev / null && debian-sa1 1 1)
1月08日23:45:01 monal-Lenovo-IdeaPad-Z510 CRON [30867]:pam_unix(cron:session):用户root会话已关闭

4 回答

  • 2

    只需运行此命令

    sudo mysql_install_db --user=mysql --basedir=/usr/ --ldata=/var/lib/mysql/
    
  • -2

    I add this answer to others who didn't find satisfying answer.

    首先,按照一个简单的tutorial将别名和配置复制并设置到新的所需数据目录( datadir ) .

    该教程展示了如何:

    • 停止mysql服务,

    • 备份并将现有数据库复制到新位置

    • 添加AppArmor规则 .

    • 重新启动服务 .

    然后,当我将 datdir 移动到 /media/data/mysql/ 时,我遇到了这个确切的问题(AppArmor访问被拒绝),并且由于 AVC apparmor="DENIED" operation="open" prof..... ,最后一步(重启mysql服务)失败了 .

    首先,正如@reihaneh所提到的,添加AppArmor读写规则:在vim /etc/apparmor.d/usr.sbin.mysqld 末尾添加 /db/data/mysql r,/db/data/mysql** rwk, (不要删除逗号)

    Finally, the only thing left to do (not mentioned in tutorials) is to change the privileges for the new datadir to the MySQL-Server user and mysql group .

    我用nautilus这样做:

    Run nautilus as SU (sudo nautilus) -> right click on the NEW datadir -> Properties -> Permissions

    然后选择所有者: MySQL - MySQL Server
    和组: mysql

  • 0

    首先停止mysql实例 . 您需要将确切的/ var / lib / mysql目录复制到新数据目录,同时保留其权限 . 所以使用rsync和-a选项

    sudo rsync -av /var/lib/mysql /db/data/
    

    还要更改mysql.cnf文件中的数据目录路径

    您需要为apparmor添加别名,以便它允许mysql写入新目录

    要添加别名:

    sudo nano /etc/apparmor.d/tunables/alias
    

    然后将此行添加到底部

    alias /var/lib/mysql/ -> /db/data/mysql
    

    重启apparmor

    sudo systemctl restart apparmor
    

    现在启动mysql . 它应该工作

  • 0

    如果您的mysql正在运行,并且您想要更改目录流,请执行以下步骤:从_439861更改datadir_更改所有者或为新目录设置高权限 chown mysql.mysql /yourdir/mysql 您应该更改 vim /etc/apparmor.d/tunables/alias

    alias /var/lib/mysql/ -> /yourdb/mysql

    最后在 vim /etc/apparmor.d/usr.sbin.mysqld 末尾添加 /db/data/mysql r/db/data/mysql** rwk
    /etc/init.d/apparmor reload /etc/init.d/mysql start

    但是,如果你的mysql不再工作,请删除它并流动这些步骤 . 如果需要将数据复制到新目录 . 删除步骤: apt-get autoremove mysql-server

    apt-get remove --purge mysql-\*

    apt-get install mysql-server

相关问题