下载mysql的压缩包 : mysql下载
首先连接到linux,切换至root用户
检查mysql用户组和用户是否存在
cat /etc/group | grep mysql
cat /etc/passwd |grep mysql
groupadd mysql
useradd -r -g mysql mysql
cd usr/local
ls
mkdir mysql
//给local赋予读写权限
chmod 777 local
//给local及其以下子目录赋予读写权限
chmod -R 777 local
使用Xftp将下载好的mysql压缩包传输到usr/local/mysql下
由于下载的mysql压缩包是mysql-8.0.18-linux-glibc2.12-x86_64.tar.xz,所以使用如下命令分两步解压,第一步完成后xz包会变成tar包,使用常规tar包解压命令解压即可
xz -d mysql-8.0.18-linux-glibc2.12-x86_64.tar.xz
tar -xvf mysql-8.0.18-linux-glibc2.12-x86_64.tar
解压完成后,会得到如下图所示目录
使用如下命令将目录下的文件移动至usr/local/mysql目录下,并在usr/local/mysql目录下新建data文件
mv mysql-8.0.18-linux-glibc2.12-x86_64/* /usr/local/mysql
mkdir data
使用如下命令给mysql目录下所有的目录及文件夹所属的用户组和用户,以及权限
chown -R mysql:mysql /usr/local/mysql
chmod -R 755 /usr/local/mysql
赋权成功后cd到usr/local/mysql/bin目录下,使用如下命令编译安装并初始化mysql,务必记住初始化输出日志末尾的密码(数据库管理员临时密码)
cd usr/local/mysql/bin
./mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data --basedir=/usr/local/mysql --lower-case-table-names=1
vi /etc/my.cnf
添加配置如下:
[mysqld]
datadir=/usr/local/mysql/data
port = 3306
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
symbolic-links=0
max_connections=400
innodb_file_per_table=1
#表名大小写不明感,敏感为
lower_case_table_names=1
bind-address = 0.0.0.0
添加配置完成后,先按Esc退出编辑,再按:,输入wq保存修改
添加配置后,使用如下命令尝试启动mysql服务
/usr/local/mysql/support-files/mysql.server start
此错误解决方法如下:
mysql8.0只有在初始化的时候设置 lower_case_table_names=1才有效
故初始化命令如下:
./mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data --basedir=/usr/local/mysql --lower-case-table-names=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
service mysql restart
使用如下命令与之前保存的mysql临时密码登录mysql,并修改登录密码
mysql -u root -p
此错误解决方法如下:
此错误是因为未安装libtinfo.so.5依赖包所导致的,所以需使用如下命令安装ncurses-devel.x86_64插件,并添加软连接
sudo dnf install ncurses.x86_64
sudo ln -s /usr/lib64/libtinfo.so.6.1 /usr/lib64/libtinfo.so.5
成功安装依赖并添加软连接后,再次尝试连接mysql,成功,输入之前的保存的临时密码,登陆成功
使用sql语句修改登录密码,修改成功后,退出mysql并使用新密码登录,登录成功
alter user root@localhost identified by 'new password';
vim /etc/profile
在配置文件空白处添加如下配置
#set mysql
export MYSQL_HOME=$PATH:/usr/local/mysql
export PATH=$MYSQL_HOME/bin:$PATH
添加配置完成后,先按Esc退出编辑,再按:,输入wq保存修改,修改配置文件后使用如下命令让配置文件生效
source /etc/profile
将mysql服务使用如下命令设置为开机自启
//将服务文件拷贝到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
至此,linux安装mysql成功,接下来是开放远程连接,使linux上的mysql能被远程访问
使用sql语句修改root用户的host
use mysql;
select host,user from user;
update user set host='%' where user='root';
flush privileges;
alter user 'root'@'%' identified with mysql_native_password by 'new password';
//切换数据库
use mysql;
//创建用户(username:用户名;%:任意ip,也可以指定,root默认就是localhost;password:登录密码)
CREATE USER 'username'@'%' IDENTIFIED BY 'password';
//授权,默认创建的用户权限是usage,就是无权限,只能登录而已,(all:所有权限,这里有select,update等等权限,可以去搜一下;后面的*.*:指定数据库.指定表,这里是所有;to后面就是你刚才创建的用户)
grant all on *.* to 'user1'@'%';
//注意:用以上命令授权的用户不能给其它用户授权,如果想让该用户可以授权,用以下命令:
GRANT all ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION;
开放linux防火墙的3306端口
//开启端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
//查询端口号3306是否开启:
firewall-cmd --query-port=3306/tcp
//重启防火墙:
firewall-cmd --reload
//查询有哪些端口是开启的:
firewall-cmd --list-port
//禁用端口
firewall-cmd --zone=public --remove-port=3306/tcp --permanent