zhanghaoran
文章 文章详情

记录Ubuntu系统,MySql安装、配置、远程连接、错误处理

阅读:112 分类:Linux/MySql 发布时间:9天前

本文主要记录在Ubuntu上关于MySql的安装、配置、远程连接、常见错误配置。

常见错误:mysql出现ERROR1698(28000):Access denied for user root@localhost错误的解决方法。

正文

1. 安装MySql

sudo apt-get install mysql-server

2. 配置

在server端一般不会出现下述问题

桌面端Ubuntu (Ubuntu desktop)

2.1 进入MySQL配置

sudo mysql_secure_installation

2.2 根据提示 设置密码强度、密码、是否移除匿名用户和初始数据库。

本文不做赘述, 根据提示设置就好。

当看到 Success All done! 的时候证明配置完成。

3. 连接数据库

mysql -u root -p

4. 出错

操作第三步的时候,报这个错:**ERROR1698(28000):Access denied for user root@localhost

解决办法:**

4.1 输入sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf,进入到这个配置文件,

然后在这个配置文件中的[mysqld]这一块中加入skip-grant-tables这句话。 如下图所示: mysqld.cnf

之后, 保存退出~ 输入:service mysql restart, 重新启动mysql。

4.2 设置root密码

在终端上输入mysql -u root -p,遇见输入密码的提示直接回车即可,进入mysql后,分别执行下面三句话:

use mysql;   然后敲回车
update user set authentication_string=password("你的密码") where user="root";  然后敲回车
flush privileges;  然后敲回车

退出MySQL

4.3 注释掉skip-grant-tables

重新进入到mysqld.cnf文件中去把刚开始加的skip-grant-tables这条语句给注释掉。

再返回终端输入mysql -u root -p,应该就可以进入数据库了。

4.4 依然报错的话

如果此时还是报出错误,那么就需要返回step3中,把注释掉的那条语句重新生效(就是删除#符号),重新进入mysql中,先任意选择一个数据库,比如use mysql;

然后输入select user, plugin from user; 看下图:

从图中可以看到在执行了select user, plugin from user; 后,错误原因是因为plugin root的字段是auth_socket,那我们改掉它,替换为mysql_native_password就行了。输入:

update user set authentication_string=password("aaa123456n='mysql_native_password' where user='root';

然后回车执行以下,再输入select user,plugin from user;回车,我们能看到root用户的字段改成功了。

最后quit退出。返回执行step3。

那么这个问题就完全解决了。

此处报错参考:https://www.cnblogs.com/cpl9412290130/p/9583868.html

5.远程连接

5.1. 注释 mysqld.cnf 下的bind_address

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

5.2. 删除匿名用户

# 1. 进入MySQL
mysql -u root -p
# 2.切换到数据库mysql
use mysql;
# 3. 删除匿名用户
delete from user where user='';

5.3.增加允许远程访问的用户或者允许现有用户的远程访问。

接着上面,删除匿名用户后,给root授予在任意主机(%)访问任意数据库的所有权限。SQL语句如下:

grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;

如果需要指定访问主机,可以把%替换为主机的IP或者主机名。另外,这种方法会在数据库mysql的表user中,增加一条记录。如果不想增加记录,只是想把某个已存在的用户(例如root)修改成允许远程主机访问,则可以使用如下SQL来完成:

update user set host='%' where user='root' and host='localhost';

5.4. 退出数据库

exit;

5.5. 重启数据库

sudo service mysql restart

远程连接参考:http://ofus.ink/articles/article/43/