ubuntu18安装mysql5.7.37全流程和避坑指南

354 阅读3分钟

检查系统中是否已经安装了MySQL

在终端里面输入

sudo netstat -tap | grep mysql

若没有反应,没有显示已安装结果,则没有安装

如若已安装,可以选择删除。

安装MySQL

在终端输入

sudo apt-get install mysql-server mysql-client

在此安装过程中会让你输入root用户(管理MySQL数据库用户,非Linux系统用户)密码,按照要求输入即可。

测试安装是否成功

  • 方法一, 在终端输入 :

sudo netstat -tap | grep mysql

  • 方法二, 在终端输入 :

mysql -u root -p

接下来会提示你输入密码,输入正确密码,即可进入

修改远程访问mysql(这个重要)

第一步:修改配置文件的端口绑定

打开的目录可能会根据MySQL的版本稍有不同,可以先尝试打开/etc/mysql/my.cnf这个配置文件,若该文件不存在或文件内容为空,则尝试下面的文件路径。

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

在下面行的开头加上#,注释掉该行,然后保存退出vim:

bind-address = 127.0.0.1

第二步:修改访问权限

进入mysql,输入如下命令,输入密码,进入mysql命令行

mysql -u root -p

授权root用户访问权限,并刷新权限,此处的root可用其它MySQL用户替换,password部分需替换为该用户对应的密码

grant all privileges on . to root@"%"identified by"password"with grant option;

flush privileges;

exit;

第三步:重启mysql服务

service mysql restart

修改MySQL数据库服务的默认字符集为utf8(如果是中文站的话, 这个重要)

这个非常有必要,因为如果不统一字符集为utf8,当你往数据库表中插入中文字符时会报错,或者显示乱码

检查数据库设置

show variables like '%colla%';
show variables like '%charac%';

检查数据库表的数据字符集

SELECT
  `tables`.`TABLE_NAME`,
  `collations`.`character_set_name`
FROM
  `information_schema`.`TABLES` AS `tables`,
  `information_schema`.`COLLATION_CHARACTER_SET_APPLICABILITY` AS `collations`
WHERE
  `tables`.`table_schema` = DATABASE()
  AND `collations`.`collation_name` = `tables`.`table_collation`
;

如果不是utf8的字符编码, 我们就修改下默认字符集

修改mysql.cnf文件

输入命令:

sudo vi /etc/mysql/conf.d/mysql.cnf

在[mysql]和[client]下添加内容:

[client]
default-character-set=utf8
[mysql]
default-character-set=utf8

修改mysqld.cnf文件

输入命令:

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

在[mysqld]的下添加内容:

character-set-server=utf8
collation-server=utf8_general_ci

重启mysql服务:

service mysql restart

然后根据上面检查数据库设置的语句检查是否修改成功

遇到的另一个大坑

上面的配置文件修改完毕后, 在服务器端检查字符集配置都是utf8, 配置如下:

image-20220225143057187

我在本地电脑使用MySQL Workbench登录这个数据库, 执行相同的命令show variables like '%charac%';, 配置如下:

image-20220225143444614

重启mysql和重启Workbench都没生效, 后面请教了后端同学, 他让我执行了一下命令解决:

修改数据库字符集:

alter database <数据库名> character set utf8; 

重启mysql服务:

service mysql restart

如果有之前创建的数据库表, 需要修改字符集, 运行命令:

ALTER TABLE 表名 CONVERT TO CHARACTER SET 'utf8' COLLATE utf8_general_ci;

参考链接:

blog.csdn.net/qq_41855420…

stackoverflow.com/questions/1…

www.jianshu.com/p/08bda91cd…