您的位置:首页 > 数据库 > MySQL

关于 Mac OS 本地安装 Mysql 的一些坑

2016-01-24 12:05 615 查看

前言

为了项目需要,在自己的 Mac Os 上装了 Mysql,结果各种报错,启动不了、登录不了、无法修改密码、图形化连不上等等。这儿做下记录,方便自己和其他人查阅。

安装常规步骤

访问MySQL的官网 http://www.mysql.com/downloads/ 然后在页面中会看到“MySQL Community Server”下方有一个“download”点击。





选中合适的版本和平台下载 dmg

也可以使用命令行的方法用 brew 安装 Mysql。

一般人按照上面的步骤就成功了,但是笔者很不幸,笔者的Mysql 并没有成功运行,成功运行后并没有能成功连接。经过一番折腾,把遇到了问题修好了,把这些坑做些记录。

报错 Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’

mysql 无法启动 报下面的错误。

Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2)


解决思路:检查这些文件是否存在、读写权限、所属用户等等。

最好使用 root 来启动 mysql(使用 root 请小心谨慎)。

最后笔者是看的这篇文章 Getting “Can’t connect…through socket ‘/tmp/mysql’” when installing MySQL on Mac OS X 10.6 with Homebrew,按照上面的方法解决了问题。

mysqld stop
touch /tmp/mysql.sock

// With old brew recipes
safe_mysqld restart
// With new brew recipes
mysqld_safe restart


或者试试
mysql.server start
命令。

在 System Preference 里面有 myql 界面,上面的按钮 Start 或者 Stop Mysql。但是很不幸,笔者的 Start 和 Stop 按钮是无效的,点了很多次都没用。



报错 ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password: NO)

装完之后无法登录,是密码的问题,方法是修改 user 表的 password。

./mysql -u root
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)


试了很多种方法,加上-p 参数等等。最后还是参看这篇文章 完整过程解决 ERROR 1045 (28000): Access denied for user ‘mysql’@’localhost’ (using password: NO) ,解决方法总结如下:

mysql stop //或者使用杀进程的方法 kill -9 pid
mysqld_safe --skip-grant-tables //开始没加后面的--skip-grant-tables失败了


然后再开一个 terminal,登录进 mysql

$ ./mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 13
Server version: 5.7.10 MySQL Community Server (GPL)

mysql> use mysql;
Database changed

mysql> update user set password=password("**passwd**") where user="root";
ERROR 1054 (42S22): Unknown column 'password' in 'field list'

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql> \q
Bye


很多人这一步就成功了,但是笔者在这一步还是遇到了坑。

报错 Unknown column ‘password’ in ‘field list’

错误信息

mysql> update user set password=password("**passwd**") where user="root";
ERROR 1054 (42S22): Unknown column 'password' in 'field list'


网上很多修改密码都是类似的命令

UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root';


但是很无奈,笔者的 user 表里面没有Password字段,大小写也试验过了。

下面是 user 表的所有 field:

| Host      | User      | Select_priv | Insert_priv | Update_priv | Delete_priv | Create_priv | Drop_priv | Reload_priv | Shutdown_priv | Process_priv | File_priv | Grant_priv | References_priv | Index_priv | Alter_priv | Show_db_priv | Super_priv | Create_tmp_table_priv | Lock_tables_priv | Execute_priv | Repl_slave_priv | Repl_client_priv | Create_view_priv | Show_view_priv | Create_routine_priv | Alter_routine_priv | Create_user_priv | Event_priv | Trigger_priv | Create_tablespace_priv | ssl_type | ssl_cipher | x509_issuer | x509_subject | max_questions | max_updates | max_connections | max_user_connections | plugin                | authentication_string                     | password_expired | password_last_changed | password_lifetime | account_locked |


最后笔者查了这篇文字MySQL user DB does not have password columns - Installing MySQL on OSX,才发现是修改authentication_string字段。

所以上面的sql 语句变成了

UPDATE mysql.user SET authentication_string=PASSWORD('MyNewPass') WHERE User='root';


报错 reset your password using ALTER USER statement before executing this statement

能进入 mysql,但是执行任何语句都会报下面的错误

或者用图形化工具连接 mysql 也会报下面的错。

ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.


解决方法是重置密码。

mysql> select 1;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
mysql> set password = password("chenxb123");
Query OK, 0 rows affected, 1 warning (0.01 sec)

mysql> select 1;
+---+
| 1 |
+---+
| 1 |
+---+
1 row in set (0.00 sec)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mysql mac 密码 error 腾讯