网上 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
在 [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;
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 查看日志。
修改 vim /etc/mysql/mysql.conf.d/mysqld.cnf 把 bind-address 绑定内容改为 0.0.0.0
[mysqld] bind-address = 0.0.0.0
查看用户信息及权限 SELECT User, Host, authentication_string, plugin, Grant_priv, Super_priv FROM mysql.user; 查看权限表 SELECT * FROM information_schema.USER_PRIVILEGES;
软件的安全性越来越重要,如果需要动默认的配置,代价也越来越大。折腾了一上午,记录下。
本文为宁若水!原创文章,转载无需和我联系,但请注明来自[若水]博客 www.lalaya.net