Mysql安装
# linux安装mysql
# 1.下载和安装
mkdir /usr/local/mysql
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz
tar -zxvf mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz
mv /usr/local/mysql-5.7.22-linux-glibc2.12-x86_64/* /usr/local/mysql/
ls 查看mysql下无data文件夹,需要手动创建 mkdir data
1
2
3
4
5
2
3
4
5
# 2.创建用户组和授权
groupadd mysql
useradd -r -s /sbin/nologin -g mysql mysql -d /usr/local/mysql (禁止使用mysql用户进行远程登录)
chown -R mysql.mysql /usr/local/mysql/ (授权)
1
2
3
2
3
# 3.初始化数据库
# 安装
yum -y install numactl
# 进入mysql bin目录
cd /usr/local/mysql/bin
# 执行以下语句
./mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/
# 注意:安装完后要记住初始化密码。
1
2
3
4
5
6
7
2
3
4
5
6
7
# 4.配置
打开配置文件vim /etc/my.cnf,添加如下图配置

# 创建相关目录和授权
mkdir /var/log/mariadb
touch /var/log/mariadb/mariadb.log
chown -R mysql:mysql /var/log/mariadb/
# 设置便捷启动
cp -a /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
# 设置之后 可以通过如下命令启动mysql
service mysqld start
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 5.修改密码
# 进入mysql bin目录
cd /usr/local/mysql/bin
# 进入mysql 并输入初始密码
./mysql -uroot -p
# 登录之后修改密码
set password for 'root'@localhost=password('123456') ;修改密码
1
2
3
4
5
6
2
3
4
5
6
# Docker安装mysql
# 1.拉取mysql镜像
docker pull mysql:5.7
1
# 2.启动mysql
# 密码先设置123456,然后进入容器再修改
docker run -p 3306:3306 --name mysql -v /mydocker/mysql/conf:/etc/mysql/conf.d -v /mydocker/mysql/logs:/var/log/mysql -v /mydocker/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
1
2
2
提示
如果报错 Check if the specified host path exists and is the expected,则先在 /docker/mysql/conf/ 下touch my.cnf
# 3.修改密码
# 进入容器
docker exec -it mysql bash
# 连接mysql
mysql -uroot -p
# 修改密码
use mysql;
-- 内部密码
alter user 'root'@'localhost' identified with mysql_native_password by '123456';
-- 外部密码
set password for 'root'@'%' = password('123456');
flush privileges;
quit;
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
# 4.设置不区分大小写
# 进入容器
docker exec -it mysql /bin/bash
# 打开配置文件(如果没有提示没有命令,则需要安装相关组件 查看 http://blog.yueshuge.cn/pages/93e916/#docker%E5%AE%89%E8%A3%85 问题记录)
vim /etc/my.cnf
在datadir下添加
lower_case_table_names=1
# 重启mysql
1
2
3
4
5
6
7
2
3
4
5
6
7
# 问题记录
# 1.MYSQL5.7版本sql_mode=only_full_group_by问题
%错误信息
[Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'information_schema.PROFILING.SEQ' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
%解决方案
select @@global.sql_mode
%查询出来的值为:
ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
%去掉ONLY_FULL_GROUP_BY,重新设置值。
set @@global.sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 2.mysql连接失败处理

mysql -uroot -p
# 输入密码
use mysql;
update user set host = '%' where user = 'root';
flush privileges;
1
2
3
4
5
2
3
4
5
# 3.mysql修改密码
# 1.旧密码修改新密码
mysql -uroot -p
# 输入原来的密码
use mysql;
update user set password=password("123456") where user='root';
flush privileges;
exit;
# 2.忘记密码
/etc/init.d/mysql stop
mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
mysql -u root mysql
update user set password=password('123456') where user='root';
flush privileges;
exit
/etc/init.d/mysql restart
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 4.微信昵称有特殊符号,导致插入MySQL时出错的解决方案
在微信昵称插入数据库之前进行一次转换
import org.apache.commons.codec.binary.Base64;
1
2
2

在取出时,进行解码,即可正常显示
1

上次更新: 2026/3/11 22:17:56