MySQL 安装及配置
MySQL 设置
其他问题
官方下载地址:https://dev.mysql.com/downloads/mysql/5.7.html#downloads
解压
tar -xvf mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz
解压后移动至 /usr/local/mysql
mv mysql-5.7.30-linux-glibc2.12-x86_64 /usr/local/mysql
创建用户组和用户并修改权限
groupadd mysql
useradd -r -g mysql mysql
创建数据目录并赋予权限
mkdir -p /data/mysql #创建目录
chown mysql:mysql -R /data/mysql #赋予权限
配置 my.cnf
vim /etc/my.cnf
内容如下:
[mysqld]
bind-address=0.0.0.0
port=3306
user=mysql
basedir=/usr/local/mysql
datadir=/data/mysql
socket=/tmp/mysql.sock
log-error=/data/mysql/mysql.err
pid-file=/data/mysql/mysql.pid
#character config
character_set_server=utf8mb4
symbolic-links=0
explicit_defaults_for_timestamp=true
初始化数据库
cd /usr/local/mysql/bin/
./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql/ --datadir=/data/mysql/ --user=mysql --initialize
查看密码
cat /data/mysql/mysql.err
该密码是随机产生的
启动 mysql 并修改密码
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
启动 mysql
service mysql start 或 /etc/init.d/mysql start
查看
ps -ef|grep mysql
改密码这里我遇到了一个问题,有的 Linux 版本可以直接使用 service mysql start 启动MySQL,而我使用的不行,需要使用 /etc/init.d/mysql start 启动。
修改密码方法 1
./mysql -u root -p #bin目录下
这里需要使用上面红框括起来的密码
执行这3步
SET PASSWORD = PASSWORD('123456');
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
FLUSH PRIVILEGES;
修改密码方法 2
使用该方法,还完成了一些其他的配置。
./mysql_secure_installation
先登录数据库,然后执行下面3个命令,使用 % 能让任何 host 连接,也可以设置特定的 IP。如果不进行设置会报下面的错:
use mysql #访问mysql库
update user set host = '%' where user = 'root'; #使root能被任何host访问
FLUSH PRIVILEGES; #刷新
完成设置后,我笔记本 Linux 的 Navicat 可以连接数据库,我台式电脑 Windows 的 Navicat 也能连接到数据库了。
在别的目录启动 mysql
这样安装下来,每次使用 mysql 都需要到 bin 目录下,按照以下方法就可以在常用目录下登陆 mysql:
在常用目录下使用mysql的方法
pwd查看常用目录路径
ln -s /usr/local/mysql/bin/mysql 常用目录路径
mysql 重启后报错 ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
在上网查阅资料,有的博客说是少了一个配置。需要在 /etc/my.cnf文件中添加 socket=/tmp/mysql.sock。但是我们上面的配置中已经有了这一项了,所以我使用 /etc/init.d/mysql start 启动 MySQL 后就解决问题了。没有配置相应内容的,需要配置相应内容后再启动。
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
/etc/my.cnf 文件,在 [mysqld] 下面添加 skip-grant-tables 这个配置。然后需要重启 MySQL 的服务,直接在 /usr/local/mysql/bin 目录下使用 ./mysql 命令,此时是不需要密码就能登录进去的。通过该语句完成密码的重置工作:
update user set authentication_string=password("新密码") where user="root";
然后需要按连接 Navicat 的方法设置,退出后删除 skip-grant-tables 配置再重启服务即可解决问题。
安装配置过程中常用命令及目录
配置 my.cnf
vim /etc/my.cnf
启动 mysql
service mysql start或/etc/init.d/mysql start
/usr/local/mysql/bin 下使用 ./mysql