mysql5.7

记一次心酸的在Deepin(Ubuntu、linux)上安装mysql的办法。弄了一天,最后终于成功了,期间还使用apt-get remove卸载了一次mysql-server mysql-client(卸载的时候可能会要求你使用apt-get autoremove)

参考网站:”plugin auth_socket is not loaded“

解决方式是:

use mysql;

update user set authentication_string=PASSWORD(“”) where User=’root’;

update user set plugin=”mysql_native_password” where User=’root’;flush privileges;

quit;

“mysqld_safe Directory ‘/var/run/mysqld’ for UNIX socket file don’t exists”

解决方式是:

mkdir -p /var/run/mysqld

chown mysql:mysql /var/run/mysqld

“ERROR 1290 (HY000): The MySQL server is running with the –skip-grant-tables option so it cannot execute this statement”

解决方式是:参考资料(1)中的内容,先执行一遍flush privileges;

mysql> alter user [email protected] identified by ‘123’;

ERROR 1290 (HY000): The MySQL server is running with the –skip-grant-tables option so it cannot execute this statement

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

mysql> alter user [email protected] identified by ‘123’;

Query OK, 0 rows affected (0.00 sec)

“Unknown column ‘password’ in ‘field list’”

解决方式是:

新安装的MySQL5.7,登录时提示密码错误,安装的时候并没有更改密码,后来通过免密码登录的方式更改密码,输入update mysql.user set password=password(‘root’) where user=’root’时提示ERROR 1054 (42S22): Unknown column ‘password’ in ‘field list’,

原来是mysql数据库下已经没有password这个字段了,password字段改成了:authentication_string,所以更改语句替换为

update mysql.user set authentication_string=password(‘root’) where user=’root’ ;

即可,然后执行:

mysql> flush privileges;

mysql> quit ;

总结如下:(注意应使用管理员权限,必要时使用sudo执行相关命令)

#先停止MySQL服务

service msyql stop

#跳过安全检查(这步容易出错,见上面说明)

/usr/bin/mysqld_safe –skip-grant-tables &

(解释:设置了该参数,则实例在启动过程中会跳过权限表的加载,这就意味着任何用户都能登录进来,并进行任何操作,相当不安全。建议同时添加–skip-networking参数。其会让实例关闭监听端口,自然也就无法建立TCP连接,而只能通过本地socket进行连接。MySQL8.0就是这么做的,在设置了–skip-grant-tables参数的同时会自动开启–skip-networking。/usr/bin/mysqld_safe –defaults-file=my.cnf –skip-grant-tables –skip-networking &)

#重开一个shell

进入mysql

#更改密码

执行:ALTER USER [email protected] IDENTIFIED WITH mysql_native_password BY ‘123qwe’;(报错)

(解释:免密码登录进来后,直接执行alter user操作是不行的,因为此时的权限表还没加载。可先通过flush privileges操作触发权限表的加载,再执行alter user操作。需要注意的是,通过alter user修改密码只适用于MySQL5.7和8.0,如果是MySQL 5.6,此处可写成update mysql.user set password=password(‘123456’) where host=’localhost’ and user=’root’;)

执行:flush privileges;

再执行:ALTER USER [email protected] IDENTIFIED WITH mysql_native_password BY ‘123qwe’;(成功)

#刷新权限

再执行:flush privileges;

退出mysql:quit;

#重新启动MySQL服务

service msyql restart

完成密码修改

下一步是安装MySQL-workbench,一条命令,安装卸载都很方便。

sudo apt-get install mysql-workbench

要安装Navicat,其实挺麻烦的,界面也是丑的不行,主要是Navicat是运行在wine下的,安装后电脑里会多了很多莫名奇妙的wine程序,比如notepad,webbrower等,还没想到方法删掉它们。

二、Win10下相对于的操作步骤为:

1、在服务里面打开MySQL80服务的属性,查看启动参数–defaults-file=”C:ProgramDataMySQLMySQL Server 8.0my.ini”,复制这句my.ini的路径,以及mysql安装路径。

2、停止mysql服务

3、打开PowerShell,进入mysql的安装目录,输入以下命令,打开mysql服务

PS C:Program FilesMySQLMySQL Server 8.0bin> .mysqld.exe –defaults-file=”C:ProgramDataMySQLMySQL Server 8.0my.ini” –skip-grant-tables –shared-memory

4、另开一个PowerShell,进入mysql安装目录,执行:

PS C:Program FilesMySQLMySQL Server 8.0bin> .mysql.exe

5、刷新数据库权限:

mysql> FLUSH PRIVILEGES;

6、修改root密码:

mysql>ALTER USER [email protected] IDENTIFIED BY ‘新密码’;

7、退出PowerShell中的mysql,重启服务里面的mysql。