什么是重新安装MySQL / MariaDB最安全的方法?

Debian Stretch上安装LAMP栈之后,我遇到了MySQL / MariaDB的各种问题(无法以普通用户身份login,然后root无权限)。 我认为最简单的解决scheme是重新安装 MariaDB:

# apt-get purge mysql-server mysql-client mysql-common mysql-server-core-5.5 mysql-client-core-5.5 # rm -rf /etc/mysql /var/lib/mysql # apt-get autoremove # apt-get autoclean # apt-get install mariadb-server mariadb-client 

但是,安装失败:

 Jan 24 23:07:55 debian mysqld[5243]: 2017-01-24 23:07:55 140080623286144 [Note] InnoDB: Initializing buffer pool, size = 128.0M Jan 24 23:07:55 debian mysqld[5243]: 2017-01-24 23:07:55 140080623286144 [Note] InnoDB: Completed initialization of buffer pool Jan 24 23:07:55 debian mysqld[5243]: 2017-01-24 23:07:55 140080623286144 [Note] InnoDB: Highest supported file format is Barracuda. Jan 24 23:07:55 debian mysqld[5243]: 2017-01-24 23:07:55 140080623286144 [Note] InnoDB: 128 rollback segment(s) are active. Jan 24 23:07:55 debian mysqld[5243]: 2017-01-24 23:07:55 140080623286144 [Note] InnoDB: Waiting for purge to start Jan 24 23:07:55 debian mysqld[5243]: 2017-01-24 23:07:55 140080623286144 [Note] InnoDB: Percona XtraDB (http://www.percona.com) 5.6.34-79.1 started; log sequence number 1622848 Jan 24 23:07:55 debian mysqld[5243]: 2017-01-24 23:07:55 140080018601728 [Note] InnoDB: Dumping buffer pool(s) not yet started Jan 24 23:07:55 debian mysqld[5243]: 2017-01-24 23:07:55 140080623286144 [Note] Plugin 'FEEDBACK' is disabled. Jan 24 23:07:55 debian mysqld[5243]: 2017-01-24 23:07:55 140080623286144 [Note] Server socket created on IP: '127.0.0.1'. Jan 24 23:07:55 debian mysqld[5243]: 2017-01-24 23:07:55 140080623286144 [ERROR] Can't start server: Bind on TCP/IP port. Got error: 98: Address already in use Jan 24 23:07:55 debian mysqld[5243]: 2017-01-24 23:07:55 140080623286144 [ERROR] Do you already have another mysqld server running on port: 3306 ? Jan 24 23:07:55 debian mysqld[5243]: 2017-01-24 23:07:55 140080623286144 [ERROR] Aborting** Jan 24 23:07:55 debian mysqld[5243]: Jan 24 23:07:58 debian mysqld_safe[5297]: mysqld from pid file /var/run/mysqld/mysqld.pid ended Jan 24 23:08:25 debian /etc/init.d/mysql[5552]: 0 processes alive and '/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf ping' resulted in Jan 24 23:08:25 debian /etc/init.d/mysql[5552]: [61B blob data] Jan 24 23:08:25 debian /etc/init.d/mysql[5552]: error: 'Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2 "No such file or directory")' Jan 24 23:08:25 debian /etc/init.d/mysql[5552]: Check that mysqld is running and that the socket: '/var/run/mysqld/mysqld.sock' exists! Jan 24 23:08:25 debian /etc/init.d/mysql[5552]: Jan 24 23:08:25 debian mysql[5070]: Starting MariaDB database server: mysqld . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . failed! Jan 24 23:08:25 debian systemd[1]: mysql.service: Control process exited, code=exited status=1 Jan 24 23:08:25 debian systemd[1]: Failed to start LSB: Start and stop the mysql database server daemon. 

我从输出中收集到数据库没有完全删除(“你已经有另一个mysqld服务器运行在端口:3306?”)。 有没有更好的方法来尝试和重新安装MySQL / MariaDB。

抱歉回答我自己的问题,但我想我find了…

清除失败,因为mysqld仍在运行(并侦听端口3306)。

 # lsof -i TCP:3306 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME mysqld 12629 mysql 17u IPv4 78816 0t0 TCP localhost:mysql (LISTEN) 

我应该在卸载之前杀死这个进程。 杀死进程后,我可以重新安装MySQL / MariaDB:

 # kill -9 12629 # apt-get install mariadb-server mariadb-client # systemctl restart mysql # systemctl restart apache 

我希望能帮助别人