macbook pro 卸载mysql_Mac Pro下卸载安装Mysql

Mac Pro下卸载安装Mysql 系统版本: OS X 10.11.5 昨天为了修改我的Mysql密码,找了一堆教程在不明所以的情况下各种乱试,终于把我的mysql玩脱了,走上了曲折的mysql重装之路。 一、Mac 关于Mysql的卸载: 如使用brew安装 : brew uninstall mysql 或者 brew

Mac Pro下卸载安装Mysql

系统版本:OS X 10.11.5

昨天为了修改我的Mysql密码,找了一堆教程在不明所以的情况下各种乱试,终于把我的mysql玩脱了,走上了曲折的mysql重装之路。

一、Mac 关于Mysql的卸载:

如使用brew安装:brew uninstall mysql 或者 brew remove mysql

但是又有点怕某些东西没有卸载完全影响到下一次的安装(我第一次重装就是这样的??)以下是完整一点的手动卸载:

sudo rm /usr/local/mysql

sudo rm -rf /usr/local/mysql*

sudo rm -rf /Library/StartupItems/MySQLCOM

sudo rm -rf /Library/PreferencePanes/My*

rm -rf ~/Library/PreferencePanes/My*

sudo rm -rf /Library/Receipts/mysql*

sudo rm -rf /Library/Receipts/MySQL*

sudo rm -rf /var/db/receipts/com.mysql.*

参考:How do you uninstall MySQL from Mac OS X?

其实不同的安装方式有些东西的存储位置不一样,删除完检查一下一些问文件是否删除了,没有的话则删除掉:

/usr/local/Cellar 里的mysql文件

/usr/local/var 里的mysql文件

/tmp 里的mysql.sock, mysql.sock.lock, my.cnf文件

pid文件和err文件都在/usr/local/var/mysql里确保删除了

brew安装的安装包存储在/usr/local/Library/Cache/Homebrew也可以一并删除

执行brew cleanup

二、各种文件的作用

此次卸载安装的过程中,感悟最深的还是对很多文件的作用都不甚了解,导致到出了什么问题就只会沿着那个问题找答案,有时候找到的答案有作用时候找到的答案就会很坑,所以就想了解一些那些文件究竟是什么作用

安装过程中最常见的问题:

ERROR!The server quit without updating PID file (/usr/local/var/mysql/***MacBook-Pro.local.pid)

(一)Pid文件:

记录==当前Mysql进程的Process ID==。未指定 pid 文件时,pid 文件默认名为 主机名.local.pid,存放的路径在默认MySQL的数据目录。通过mysqld_safe启动MySQL时,mysqld_safe会检查pid文件,如果pid文件不存在,不做处理;如果文件存在,且 pid 已占用则报错A mysqld process already exists,如果文件存在,但 pid 未占用,则删除 pid 文件。

mysqld 启动后会通过create_pid_file函数新建 pid 文件,通过getpid()获取当前进程 pid 并将 pid 写入 pid 文件

因此,通过mysqld_safe启动时, MySQL pid文件的作用是:在数据文件是同一份,但端口不同的情况下,防止同一个数据库被启动多次。

? / ll /usr/local/var/mysql/SarahMacBook-Pro.local.pid

-rw-r----- 1 sarah admin 6B 5 19 17:55 /usr/local/var/mysql/SarahMacBook-Pro.local.pid

? / ps -ef | grep mysql | grep -v grep

501 65673 1 0 四05下午 ?? 0:00.02

/bin/sh

/usr/local/opt/mysql/bin/mysqld_safe

--bind-address=127.0.0.1

--datadir=/usr/local/var/mysql

501 65767 65673 0 四05下午 ?? 0:52.44

/usr/local/Cellar/mysql/5.7.12/bin/mysqld

--basedir=/usr/local/Cellar/mysql/5.7.12

--datadir=/usr/local/var/mysql

--plugin-dir=/usr/local/Cellar/mysql/5.7.12/lib/plugin

--bind-address=127.0.0.1

--log-error=/usr/local/var/mysql/SarahMacBook-Pro.local.err

--pid-file=/usr/local/var/mysql/SarahMacBook-Pro.local.pid

? / cat /usr/local/var/mysql/SarahMacBook-Pro.local.pid

65767

参考:mysql pid文件是什么用途? 温国兵 来源知乎

关于出现上述问题解决方法可参考:MySql server startup error ‘The server quit without updating PID file ‘ 或者 MySQL提示:The server quit without updating PID file问题的解决办法 又或者

查看一些文件的ownership:ls -laF /usr/local/var/mysql/ 非mysql或者本人的hostname则修改sudo chown -R mysql[或者hostname] /usr/local/var/mysql/

打开同目录下的与pid同名的.err文件查看错误日志查看错误,按照错误提示去找原因

(二)、错误日志:

MySQL有四种类型的日志:Error Log、General Query Log、Binary Log 和 Slow Query Log。

错误日志,记录MySQL运行过程ERROR,WARNING,NOTE等信息,系统出错或者某条记录出问题可以查看ERROR日志。存放在与pid文件同目录下,默认为主机名.local.err或在Mysql中查询mysql> show variables like ‘log_error’; 可以在/etc/my.cnf中添加--log-error[=file_name]选项来开启mysql错误日志

日常运行日志,记录MySQL运行中的每条请求数据。在/etc/my.cnf中添加 general-log-file[=file_name]

二进制日志,包含了一些事件,这些事件描述了数据库的改动,如建表、数据改动等,也包括一些潜在改动,主要用于备份恢复、回滚等操作。

慢查询日志,用于MySQL性能调优。

其余的查看设置方法请参考MySQL日志分析

(三)、/etc/my.cnf文件:

my.cnf文件是Mysql的配置文件。当Mysqld启动服务时默认会按照一定顺序读配置文件,遵循指定优于配置,后读取的配置覆盖前面读取的配置的原则,则mysql会以读取到的最后一个配置文件为准。

查看mysql读取顺序:

? ~ mysqld --help --verbose | grep -A 10 'Usage:'

Usage: mysqld [OPTIONS]

Default options are read from the following files in the given order:

/etc/my.cnf /etc/mysql/my.cnf /usr/local/etc/my.cnf ~/.my.cnf

The following groups are read: mysqld server mysqld-5.7

The following options may be given as the first argument:

--print-defaults Print the program argument list and exit.

--no-defaults Don't read default options from any option file,

except for login file.

--defaults-file=# Only read default options from the given file #.

--defaults-extra-file=# Read this file after the global files are read.

假如不存在该文件:

在试过的几种安装方法,最后都没有在这几个文件夹里找到该文件,在安装目录下的support-files找到了安装mysql时的默认配置文件,复制过去,然后修改其中的一些配置,再重启。

sudo cp /usr/local/Cellar/mysql/5.7.12/support-files/my-default.cnf /etc/my.cnf

然后就可以很方便的启动停止mysql了(这个脚本其实是调用了mysqld_safe脚本,然后mysqld_safe再调用二进制文件 mysqld):/etc/init.d/mysql start

有可能在设置/etc/my.cnf文件运行之后没有作用,查看一下读取顺序后的那几个文件是否存在,如果存在的话,删除掉再重启。{转自:mysql 重启不读取 /etc/my.cnf 全局配置问题

配置文件中一些参数:

[mysql]

#prompt="(\\u:hostname:\D)[\\d]> "

这样使用mysql -uroot -p连接到mysql服务器时,就会显示

(root:hostname:Thu Feb 9 16:32:26 2012)[(none)]>

[client]用户告诉客户端工具mysql连接数据库服务器使用的port和socket文件的路径

[mysql]用于设置客户端工具的显示信息,如在my.cnf中设置

port = 3306 //mysql服务运行时的端口号,默认为3306

password = your_password //mysql的密码

socket = /tmp/mysql.sock //socket文件存放地址

basedir = /usr/local/Cellar/mysql //根目录(安装目录)

datadir = /usr/local/var/mysql //数据文件目录

pid-file = /usr/local/var/mysql/your_pid_file_name //pid文件存放的地址

log-error = /usr/local/var

r/mysql/your_err_file_name.log //err文件存放地址

其他一些参数可查看:Mysql配置文件my.cnf配置及配置参数详解 或者 Mysql 之配置文件my.cnf

(四)、mysql.sock文件:

mysql有两种连接方式:

TCP/IP

socket

server和client在同一台服务器(host),并且使用localhost进行链接的时候,就会使用socket作为通讯协议的载体来进行连接,它比tcp快。也就是:为主机名为localhost建立的MySQL连接,该连接过程通过一个套接字文件mysql.sock实现的。所以该文件被删后,用localhost用户是连接不到MySQL服务器的。

如果出现:

Can't connect to local MySQL server through socket '/tmp/mysql.sock'

查看下该文件是否存在,或者运行mysql.server start或者/usr/local/Cellar/mysql/5.7.12/support-file/mysql.start[你的安装目录里的support-file]再查看一下该文件是否存在

假如/tmp/mysql.sock不存在,必须建立一条tcp/ip连接,即使用127.0.0.1而不是localhost作为-h的参数去连接MySQL服务器,如:mysqladmin -h 127.0.0.1 -u root -p shutdown,强制地建立一条tcp/ip连接,关闭MySQL服务器,再重新以localhost为主机名启动MySQL服务器,它就会重新创建一个套接字文件。转自:mysql.sock的作用

假如/tmp/mysql.sock存在,查看一下mysqld的运行状态mysqld status启动它,查看是否是权限问题ls -laF /usr/local/var/mysql/[安装的datadir]如果非host则修改权限sudo chown -R mysql[或者hostname] /usr/local/var/mysql/ 然后再重启一下mysql, 如果还不起作用可以修改/etc/my.cnf 看[mysqld]下的socket路径socket=/usr/local/var/mysql/mysql.sock,重启mysql

mysql.sock.lock这个文件是用来检测是否已经安装的

lsof -i:3306查看端口 kill -9 PID杀掉进程

(五)、mysqld,mysql_safe,mysql_client,mysql_server:

MySQL在整个网络环境中使用客户端/服务器(Client/Server)架构运行。其核心程序扮演着服务器角色,而各个客户端程序连接到服务器并提出请求。

MySQL Server或者说mysqld,实际上是一个数据库服务器程序。它管理着对磁盘数据库和内存的访问,是mysql核心程序,生成管理数据库实例、数据库实例任务调度线程,并提供相关接口供不同客户端调用.MySQL Server进行多线程操作,它支持多个客户端连接的同时访问。为了更好地管理数据库内容,MySQL Server的特色架构模型支持多种存储引擎以处理不同类型的表(例如,它同时支持事务和非事务表)。

server(服务器)和host(主机)的用词区别。Server是指软件(MySQL Server程序mysqld)。Server的特征中有它的版本号,指的是哪些特性包括,哪些不包括等。而host是指==server程序运行所在的物理机==。Host的特征中包括了硬件配置,所运行的操作系统,其网络地址等等。一个host可以有多个mysqld实例在上面同时运行。

mysql-client:操作数据库实例的工具,操作mysql实例的客户端有很多,mysql-client只是其中一种,包括mysql,mysqldump,mysqlslap,这些访问,备份,压力测试的工具。客户端程序被用于和server进行通信以修改服务器端server管理的数据库信息。

mysql-server与 mysql-client是DBMS的两个面向不同操作对象的工具。server是DBMS面向物理层次,包含存储数据的一系列机制、处理方法的集成;client是DBMS面向用户,提供一系列工具为用户所用,这些工具包括通常写的sql在内都要通过server的编译才能操作物理数据。参考:Mysql客户端/服务器

mysqld_safe在Unix和NetWare中推荐使用mysqld_safe来启动mysqld服务器。mysqld_safe增加了一些安全特性,例如当出现错误时重启服务器并向错误日志文件写入运行时间信息

三、mysql安装

(一)使用brew安装

brew update //更新

brew install mysql //安装mysql,注意查看此安装过程中出现的信息

? ~ brew install mysql

/*

* 下载安装,一开始安装的都没有密码,需要运行mysql_secure_installation做些设置,里面就会设置密码

*/

==> Downloading https://homebrew.bintray.com/bottles/mysql-5.7.12.el_capitan.bot

######################################################################## 100.0%

==> Pouring mysql-5.7.12.el_capitan.bottle.tar.gz

==> /usr/local/Cellar/mysql/5.7.12/bin/mysqld --initialize-insecure --user=sarah --b

==> Caveats

We've installed your MySQL database without a root password. To secure it run:

mysql_secure_installation

To connect run:

mysql -uroot

To have launchd start mysql now and restart at login:

brew services start mysql

Or, if you don't want/need a background service you can just run:

mysql.server start

这种是没出现什么问题的安装,接下来执行mysql_secure_installation 按照它里面的提示去设置,设置完就可以直接运行了。接下来说说我遇到的坑

使用Brew安装mysql时出现的问题:

在brew执行install mysql之后会出现一系列的安装信息,出现一个Error,查看到了ERROR的内容:

==> Pouring mysql-5.7.12.el_capitan.bottle.tar.gz

Error: The `brew link` step did not complete successfully

The formula built, but is not symlinked into /usr/local

Could not symlink lib/libmysqlclient.20.dylib

/usr/local/lib is not writable.

You can try again using:

brew link mysql

执行brew link mysql:

? ~ brew link mysql

Linking /usr/local/Cellar/mysql/5.7.12...

Error: Could not symlink lib/libmysqlclient.20.dylib

/usr/local/lib is not writable. //这个文件夹不可写

修改权限:

? ~ sudo chown -R $(whoami) /usr/local/lib/

Password:

? ~ brew link mysql

Linking /usr/local/Cellar/mysql/5.7.12... 93 symlinks created

问题解决,接下来只需要执行mysql_secure_installation去设置密码就行

查找到的一些homebrew安装mysql的方法参考:OSX下使用Homebrew安装MySQL数据库 或者 MySQL安装 但是需要注意的是,这两个安装教程里面在初始化数据库的时候可能是因为mysql版本的更新,应该更改为:unset TMPDIR –> mysqld -initialize --verbose --user=whoami --basedir="$(brew --prefix mysql)" --datadir=/usr/local/var/mysql --tmpdir=/tmp 假如在安装过程中遇到其他例如pid或者mysql.sock的问题可以参考前面介绍的那些问题解决方法。

(二)使用.tar.gz

安装包下载地址

59144fe8d5b336e684ecb067c3b61131.png

//解压到安装目录

/usr/local/mysql

//将解压后的包移动到安装目录下

sudo mv mysql-5.7.12-osx10.11-x86_64 /usr/local/mysql

//更改mysql安装目录所属用户与用户组(权限)

cd /usr/local sudochown -R root:wheel mysql

//完成一些默认的初始化,执行完下面这一步会出现一个临时的密码,请保存好这密码以便修改密码

sudo bin/mysqld --initialize --user=mysql

cd /usr/local/mysql

sudo support-files/mysql.server start //启动

sudo support-files/mysql.server restart //重启

sudo support-files/mysql.server stop //停止

sudo support-files/mysql.server status //检查 MySQL 运行状态

//修改密码,输入上面给的密码

mysqladmin -u root -p旧密码 password 新密码

转载自:mac 安装 mysql.tar.gz

(三)dmg安装mysql试过了很多遍但是一直失败??所以最后就放弃挣扎了

==以上内容很多解决办法和各文件介绍整理自网络,能找到出处的一般都是摘自后面的链接==

f68f2add0b68e4f9810432fce46917b7.png

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值