1.执行如下三条命令
sudo apt-get install mysql-server
sudo apt install mysql-client
sudo apt install libmysqlclient-dev
2.测试是否成功
sudo netstat -tap | grep mysql
3.远程访问设置
sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
4.注释掉bind-address = 127.0.0.1
5.进入 mysql 服务
sudo mysql
6.执行授权命令
grant all on *.* to root@'%' identified by '这里的文字换成你想要的密码' with grant option;
flush privileges;
7.设置mysql编码
set character_set_server=utf8;
set character_set_database=utf8;
8.退出mysql服务
quit
9. 更改AWS的安全组,添加一条规则,端口号选择 3306
关于 第五步的说明:
在很多文章中都提到使用 mysql -u root -p 进入MySQL服务,但是在使用时会提示输入密码,但是此时并不知道密码,但是可以使用 sudo cat /etc/mysql/debian.cnf 命令查看密码(password)和用户名(user)。然后就可以使用 mysql -u 用户名 -p ,然后输入密码(password)进入服务。
但是这样做依然会出现错误: ERROR 1698 (28000): Access denied for user 'root'@'localhost' 。
原因剖析:
查看 user 表
sudo mysql
mysql> select user, plugin from mysql.user;
返回结果:
mysql> select user, plugin from mysql.user;
+-----------+-----------------------+
| user | plugin |
+-----------+-----------------------+
| root | auth_socket |
| mysql.sys | mysql_native_password |
| dev | mysql_native_password |
+-----------+-----------------------+
rows in set (0.01 sec)
会发现 root 的plugin是 auth_socket,但是用密码登陆时的 plugin 应该是 mysql_native_password
解决方法:使用 sudo mysql 进入MySQL服务,执行命令:
update mysql.user set authentication_string=PASSWORD('newPwd'), plugin='mysql_native_password' where user='root';
flush privileges;
sudo service mysql stop
sudo service mysql start
现在就可以使用 mysql -u root -p 进入MySQL服务了。
参考文章:
3. 问题ubuntu 和 deepin中 mysql,5.7:ERROR 1698 (28000): Access denied for user 'root'@'localhost'原因与解决
4. MySQL ERROR 1698 (28000) 错误
5. deepin/ubantu下 mysql 1698错误解决
6. https://dev.mysql.com/doc/refman/8.0/en/socket-pluggable-authentication.html