Ubuntu下安装MYQL的基本配置

网上 MySQL8 的安装教程多如牛毛,为啥我还要写一篇?

划重点,如果你按照网上的教程一步步安装完了,然后发现需要修改表名大小写不敏感。假如此时你已经导入了一部分库,不好意思,你得还得再折腾一次。所以,怎么才能一遍就装好?

问题1: 啥是表名大小写?

答: lower_case_table_names = 1 ,则表示表名大小写不敏感。默认是0,可惜我司系统太老,得改成1才没问题。

问题2:为啥安装完之后不能改?

答: MySQL8 之后,如果数据表已经初始化了,不好意思,改了不生效,必须删了,再初始化才行。

安装

下面以 apt 的方式安装

# 更新 apt
sudo apt update
# 安装 MySQL8
sudo apt install -y mysql-server-8.0
# 启动 MySQL
systemctl start mysql

配置

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

1、表名大小写设置为不敏感

在 [mysqld] 下添加  lower_case_table_names = 1 ,如下图所示。





然后重建初始化表

# 关闭 mysql
systemctl stop mysql

# 删除 /var/lib/mysql
rm -rf /var/lib/mysql

# 创建文件夹
sudo mkdir /var/lib/mysql
sudo chown mysql:mysql /var/lib/mysql

# 重新初始化 mysql
sudo /usr/sbin/mysqld --initialize --user=root --lower-case-table-names=1

# 启动 mysql
systemctl start mysql

# 查看生成的临时密码,然后登录
grep "A temporary password" /var/log/mysql/error.log

# 登录MYSQL,进入MySQL命令行模式
mysql -u root -p 

#修改root用户密码
> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
 
#切换到mysql数据库
> use mysql;

#设置root用户可以远程连接
> update user set Host = '%' where user = 'root';

#刷新权限
> FLUSH PRIVILEGES;

2、修改数据存储路径

MySQL 数据目录默认是在 /var/lib/mysql/, 如果根目录下分配的空间不多,一般需要挪动位置,比如/data/mysql/mydata

# 创建文件夹
mkdir -p /data/mysql/mydata
# -arp 是按原来的权限进行配置。执行完后mysql数据存放在 /data/mysql/mydata/mysql 目录下
cp -arp /var/lib/mysql /data/mysql/mydata
# 停止服务
systemctl stop mysql

打开 vim /etc/mysql/mysql.conf.d/mysqld.cnf 文件,修改 dataDir 字段。

[mysqld]
#
# * Basic Settings
#
user            = mysql
# pid-file      = /var/run/mysqld/mysqld.pid
# socket        = /var/run/mysqld/mysqld.sock
# port          = 3306
 datadir        = /data/mysql/mydata/mysql

修改保护文件 vim /etc/apparmor.d/usr.sbin.mysqld

# Allow data dir access
#  /var/lib/mysql/ r,
#  /var/lib/mysql/** rwk,
  /data/mysql/mydata/mysql/ r,
  /data/mysql/mydata/** rwk,

修改MySQL访问控制权限  vim /etc/apparmor.d/abstractions/mysql ,调整路径。

  abi <abi/3.0>,

   /data/mysql/mydata/mysql{,d}/mysql{,d}.sock rw,
   @{run}/mysql{,d}/mysql{,d}.sock rw,
   /usr/share/{mysql,mysql-community-server,mariadb}/charsets/ r,
   /usr/share/{mysql,mysql-community-server,mariadb}/charsets/*.xml r,

然后重启 apparmor 服务。

service apparmor reload
service apparmor restart

然后重启 MySQL 服务。

systemctl start mysql

如果不报错就是对的了~ 如果有问题,可以去 /var/log/mysql/error.log 查看日志。

3 允许远程连接

修改 vim /etc/mysql/mysql.conf.d/mysqld.cnf 把 bind-address 绑定内容改为 0.0.0.0

[mysqld]
bind-address = 0.0.0.0

4. 查看用户权限

查看用户信息及权限
SELECT User, Host, authentication_string, plugin, Grant_priv, Super_priv FROM mysql.user;

查看权限表
SELECT * FROM information_schema.USER_PRIVILEGES;

小结

软件的安全性越来越重要,如果需要动默认的配置,代价也越来越大。折腾了一上午,记录下。


白俊遥博客
请先登录后发表评论
  • 最新评论
  • 总共0条评论