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。