linux下安装MySql

linux下安装MySql

  1. 点击下载地址,选择版本8.0.26 系统为linux - Generic,下载安装包mysql-8.0.26-linux-glibc2.12-x86_64.tar.xz
  2. 解压安装包
# 如果有mariadb包,需要提前卸载!!!!!!!!

# tar.xz无法直接解压
# 将tar.xz转换为tar
xz -d mysql-8.0.26-linux-glibc2.12-x86_64.tar.xz 
# 解压tar
tar -xvf mysql-8.0.26-linux-glibc2.12-x86_64.tar
# 重命名
mv mysql-8.0.26-linux-glibc2.12-x86_64 mysql
# 在/usr/local/mysql目录下创建data目录
mkdir /usr/local/mysql/data
  1. 更改mysql目录下所有的目录及文件夹所属的用户组和用户,以及权限
chown -R mysql:mysql /usr/local/mysql
chmod -R 755 /usr/local/mysql
  1. 如果报错mysql用户不存在,执行以下命令,操作完再执行更改权限命令
groupadd mysql
useradd -r -g mysql mysql
  1. 编译安装并初始化mysql,务必记住初始化输出日志末尾的密码(数据库管理员临时密码)
# 执行启动初始化mysql之前,需要创建mysqld_safe配置的日志目录!!!!

cd /usr/local/mysql/bin
./mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data --basedir=/usr/local/mysql
# 如下图,得到初始密码 5d&l1<pHnwDD

  1. 编辑配置文件my.cnf
vim /etc/my.cnf
# 编辑内容如下
[mysqld]
datadir=/usr/local/mysql/data
bind-address = 0.0.0.0
port = 3306
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
symbolic-links=0
max_connections=400
# innodb_file_per_table:是否将每个表的数据单独存储,1表示单独存储;0表示关闭独立表空间,可以通过查看数据目录,查看文件结构的区别
innodb_file_per_table=1
# lower_case_table_names:是否区分大小写,1表示存储时表名为小写,操作时不区分大小写;0表示区分大小写;不能动态设置,修改后,必须重启才能生效
lower_case_table_names=1
# character_set_server:设置数据库默认字符集,如果不设置默认为latin1
character_set_server=utf8
socket=/usr/local/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd

[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid

#
# include all files from the config directory
#
!includedir /etc/my.cnf.d

  1. 解决中文乱码问题
#修改my.cnf文件   
vim /etc/my.cnf  

# 在[mysqld]下加入代码:
character_set_server=utf8
# 在[mysql]下加入代码:
default-character-set=utf8
  1. 启动mysql服务器
/usr/local/mysql/support-files/mysql.server start
  1. 添加软连接,并重启mysql服务
ln -s /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql 
ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql
# 重新启动mysql服务
service mysql restart
# 查看mysql状态
service mysql status
# 停止mysql   
service mysql stop
# 启动mysql   
service mysql start

  1. 登录mysql,修改密码(密码为步骤5生成的临时密码)
mysql -u root -p # 之后输入密码
# 登录进去之后,进行修改密码
mysql> alter user 'root'@'localhost' identified by 'root';
mysql> set password for root@localhost = '123456';
  1. 开放远程连接
# 以下命令在mysql模式下执行
use mysql;
update user set user.Host='%' where user.User='root';
flush privileges;
  1. 设置开机自动启动
# 将服务文件拷贝到init.d下,并重命名为mysql
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
# 赋予可执行权限
chmod +x /etc/init.d/mysqld
# 添加服务
chkconfig --add mysqld
# 显示服务列表
chkconfig --list
  1. 打开防火墙
# 查看开放的端口号
firewall-cmd --list-all
# 设置开放的端口号
sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --add-port=3306/tcp --permanent
# 重启防火墙
firewall-cmd --reload

其它问题

忘记了Mysql密码

# 停掉mysql服务  
service mysql stop
# 修改/etc/my.cnf 文件,增加 skip-grant-tables ,作用是登陆是跳开密码校验
# 然后再次登录mysql
# 根据版本执行不同的修改密码命令
# 重启mysql服务
service mysql restart

不同版本下修改密码

5.6版本

update mysql.user set password=password('123456') where User="root" and Host = "localhost";
set password for root@localhost = password('123456');

5.7 以上版本

# password 字段被设置为了authentication_string,因此更新命令为
update mysql.user set authentication_string=password('123456') where User="root" and Host="localhost";

8.0 以上的版本

alter user 'root'@'localhost' identified by 'root';
set password for root@localhost = '123456';

报错cant connect to local MySQL server through socket /tmp/mysql.sock (2)

找到/etc/my.cnf配置中的socket=/usr/local/mysql/mysql.sock

# 设置软连接
ln -s /usr/local/mysql/mysql.sock /tmp/mysql.sock

mysql8.0默认使用caching_sha2_password身份验证机制,从原来的mysql_native_password更改为caching_sha2_password;从 5.7 升级 8.0 版本的不会改变现有用户的身份验证方法,但新用户会默认使用新的 caching_sha2_password,客户端不支持新的加密方式。

# 方法之一,修改用户的密码和加密方式
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
# 方法二,使用以前的密码加密方式,修改文件 /etc/my.cnf
[mysqld]
default_authentication_plugin=mysql_native_password

mysql8启动失败 mysqld_safe error: log-error set to ‘/var/log/mariadb/mariadb.log‘

# mysqld_safe 配置的日志目录并没有创建
[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid

# 执行以下命令
mkdir /var/log/mariadb     
touch /var/log/mariadb/mariadb.log
# mysql 用户和用户对目录进行授权
chown -R mysql:mysql /var/log/mariadb/
posted @ 2024-02-19 15:32  陨落的星尘  阅读(8)  评论(0编辑  收藏  举报