ubuntu部署-mysql

问题

在下载中,如遇到源的问题,请跳转到换源篇章

需要了解更多或者更为细致,请前往MySQL官网软件开发模块 :: 开发者专区 (mysql.com)

开始配置

下载mysql

在命令行输入,以下命令,遇到问题输入y即可

1
sudo apt install mysql-server

下载好后,默认有一个没有密码的超级账号,输入以下代码即可进入mysql命令行

1
sudo mysql

配置用户

查看用户表

mysql的用户信息是存储在mysql库的user表里的,执行以下命令,查看用户的信息

1
2
use mysql;
select * from user;

创建用户

使用以下命令,可创建用户

1
CREATE USER '用户名'@'IP地址或者域名'  IDENTIFIED BY '*password*';

其中ip地址或者域名那里,如果使用通配符**%**代替,则代表可以在任何电脑使用你这个账号进行登录

查看用户权限

刚刚创建的用户是没有操作表权限的

在命令行输入

1
SHOW GRANTS FOR '用户名'@'ip地址';

授予用户权限

授予用户的万能公式是

1
grant '权限列表'  on '数据库名.表名' to  '用户名'@'主机名'<WITH GRANT OPTION>

其中WITH GRANT OPTION是代表赋予这个用户赋予其他用户的权限,可加可不加

要是要,赋予这个用户全部权限,可执行以下命令

1
GRANT ALL  ON *.*  TO '用户名'@'主机IP地址'  WITH GRANT OPTION;

其中All代表赋予出除了授予他人特权之外的全部权限,其中*.*代表可以操作所有的库中的所有表

修改用户密码

使用以下命令,即可

1
alter user '用户名'@'主机名' identified  with caching_sha2_password  by '新密码'

其中caching_sha2_password代表登录时身份验证是使用caching_sha2_password插件进行验证

超级重要的!!!

这个对于想要远程连接时是必须的!!!

因为Ubuntu的mysql默认是不允许其他主机连接,所以必须修改相应配置!!!

本人表示非常难受(因为本来不知道)

配置文件是/etc/mysql/mysql.conf.d/mysqld.cnf输入命令行

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

将其中的bind-address=127.0.0.1修改成bind-address=0.0.0.0

然后再:wq保存退出

再输入命令重启mysql

1
sudo service mysql restart

mysql的校验规则

mysql 5.7后如果程序中的sql语句使用了group by等,可能会报1055的错,其原因是mysql5.7 版本中有了一个select mode(严格模式)

临时办法(重启mysql后失效)

打开mysql命令行执行

1
SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));

但要在拥有root权限下

其中原因sql_mode是一组语法校验规则

永久办法

打开/etc/mysql/mysql.conf.d/mysqld.cnf文件

在其[mysqld]下添加

1
2
3
# 设置sql_mode,关闭ONLY_FULL_GROUP_BY,避免使用group by函数导致1055错误
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

然后再进行重启mysql

1
sudo service mysql restart

完成


ubuntu部署-mysql
http://move-brain.github.io/super_zhu/2022/11/02/ubuntu部署-mysql/
作者
super_zhu
发布于
2022年11月2日
更新于
2022年11月22日
许可协议