查看 MySQL 是否运行着,Linux 或 Mac
ps aux | grep mysql
# -a 显示所有用户正在运行的进程,但会忽略没有命令行终端控制的进程,除非指定 -x 选项
# -u 显示特定用户用户的进程
查看 MySQL 是否已安装或查看 MySQL 状态
mysqladmin -p version status
Mac 上安装
brew install mysql
MySQL 主配置文件位置,类 Unix 系统
/etc/my.cnf
⚠️ 在 Mac 上,使用 Homebrew 安装 MySQL 后,主配置文件位于
/usr/local/etc/my.cnf
配置文件被分成多个小节,使用 […] 分隔
[mysqld]
# ...
[mysql_safe]
# ...
[mysql.client]
# ...
可以通过在 [mysqld] 下添加
log=/var/log/mysql
来设置日志文件的路径,并激活日志功能
Mac 上默认的数据存储路径是
/usr/local/var/mysql
mysqladmin -u root -p flush-privileges password 'password'
对于联网的机器,不直接输入密码,而是
mysqladmin -u root -p flush-privileges password
# 之后无回显输入密码
对于刚安装的 MySQL, 初始密码是空的,输入旧密码时直接回车,再输入新密码,如 Root1234
MySQL 中权限由 用户名 + 主机 来决定
查看用户的组合
mysql -u root -p -e "SELECT User, Host FROM mysql.user;"
对组合进行修改
# 对 root + localhost 组合进行密码修改
mysql -u root -p -e "SET PASSWORD FOR 'root'@'locahost' PASSWORD('new password');"
# 对 root + 127.0.0.1 组合进行密码修改
mysql -u root -p -e "SET PASSWORD FOR 'root'@'127.0.0.1' PASSWORD('new password');"
# 删除匿名用户
mysql -u root -p -e "DROP USER 'root'@'%';"
mysql -u root -p -e "DROP USER ''@'localhost';"
刷行权限,使密码修改等操作立即刷新
mysqladmin -u root -p flush-privileges
创建用户
mysql -u root -p -e "GRANT <USAGE> ON *.* TO '<username>'@'localhost' IDENTIFIED BY 'password'"
使用
mysql -u root -p -e "GRANT ALL ON *.* TO 'alfred'@'localhost' IDENTIFIED BY 'Root1234';"
用户 alfred 拥有所有基本权限
获知某个用户所拥有的权限
mysql -u root -p -e "SHOW GRANTS FOR 'alfred'@'localhost'\g"
修改普通用户的密码
# 使用 root 登录
mysql -u root -p
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass');
下面方法试用于使用 Homebrew 安装的 MySQL
数据库文件原存储路径
/usr/local/var/mysql
数据库配置文件路径
/usr/local/etc/my.cnf
停止 MySQL 服务
mysql.server stop
更改配置文件
# Default Homebrew MySQL server config
[mysqld]
# Only allow connections from localhost
bind-address = 127.0.0.1
datadir=/new/data/storage/path # 填写新的路径
迁移原数据库文件
将 /usr/local/var/mysql
下的文件及文件夹,复制到新的路径下
重启 MySQL 服务
mysql.server start