为了项目需要,在自己的 Mac Os 上装了 Mysql,结果各种报错,启动不了、登录不了、无法修改密码、图形化连不上等等。这儿做下记录,方便自己和其他人查阅。
访问MySQL的官网 http://www.mysql.com/downloads/ 然后在页面中会看到“MySQL Community Server”下方有一个“download”点击。
也可以使用命令行的方法用 brew 安装 Mysql。
一般人按照上面的步骤就成功了,但是笔者很不幸,笔者的Mysql 并没有成功运行,成功运行后并没有能成功连接。经过一番折腾,把遇到了问题修好了,把这些坑做些记录。
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 按钮是无效的,点了很多次都没用。
装完之后无法登录,是密码的问题,方法是修改 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
很多人这一步就成功了,但是笔者在这一步还是遇到了坑。
错误信息
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';
能进入 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)