--- title: mysql安装 date: 2021-11-20 updated: 2021-11-20 tags: - mysql - linux categories: - linux - mysql keywords: - mysql - linux description: linux安装mysql top_img: https://i.loli.net/2021/09/30/YJLqn57mAe6vRNo.jpg comments: true cover: https://i.loli.net/2021/09/30/YJLqn57mAe6vRNo.jpg copyright: true copyright_author: xzh copyright_author_href: http://xxzhx.cn copyright_url: http://xxzhx.cn copyright_info: 著作权归作者所有。商业转载请联络作者获得授权,非商业转载请注明出处。 --- # mysql安装 ## 检查是否安装`mariadb` ### 首先检查服务器是否安装过`mariadb` ```shell rpm -qa | grep mariadb ``` ![](https://i.loli.net/2021/09/30/Hh2jMntbkuodJ3y.png) ### 如果有类似,需要把他卸载 ```shell rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64 ``` ### 安装mysql的依赖包libao ```shell yum install libaio ``` ## 安装mysql ### 下载mysql [mysql下载地址](https://dev.mysql.com/downloads/mysql/) 下载此版本: ![](https://i.loli.net/2021/09/30/hPl2pMgXrRstAOH.png) 下载之后,上传至服务器 ### 解压mysql 解压 ```shell tar -zxvf mysql-8.0.26-el7-x86_64.tar.gz ``` 解压之后,把解压的文件夹移动到`/usr/local/mysql` ```shell mv mysql-8.0.26-el7-x86_64 /usr/local/mysql ``` ### 创建data文件夹 进入mysql文件夹,创建data文件夹 ```shell cd /usr/local/mysql mkdir data ``` ### 创建mysql组:创建mysql用户,并设置密码。 ```shell useradd mysql passwd mysql ``` ### 将mysql目录的权限授给mysql用户和mysql组。 ```shell chown -R mysql:mysql /usr/local/mysql ``` ### 赋予权限 ```shell chmod -R 777 /usr/local/mysql chmod -R 777 /usr/local/mysql/data ``` ### 创建my.cnf配置文件 ```shell touch /usr/local/mysql/my.cnf ``` ### 编辑配置文件 ```shell vi my.cnf ``` `my.cnf`内容 ```ini [mysqld] # 设置3306端口 port=3306 # 设置mysql的安装目录 basedir=/usr/local/mysql # 设置mysql数据库的数据的存放目录 datadir=/usr/local/mysql/data # 允许最大连接数 max_connections=100 # 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统 max_connect_errors=10 # 服务端使用的字符集默认为utf8mb4 character-set-server=utf8mb4 # 创建新表时将使用的默认存储引擎 default-storage-engine=INNODB # 默认使用“mysql_native_password”插件认证 default_authentication_plugin=mysql_native_password [mysql] # 设置mysql客户端默认字符集 default-character-set=utf8mb4 [client] # 设置mysql客户端连接服务端时默认使用的端口 port=3306 default-character-set=utf8mb4 ``` ### 启动mysql 执行命令,记住随机密码 ```shell cd /usr/local/mysql/bin ./mysqld --initialize --console ``` 输入此命令后获取出现密码,在`root@localhost`的后面,把他记住,如下 ![](https://i.loli.net/2021/09/30/Enl9C6bDp43fHM8.png) ### 再赋予一次权限 因为初始了data文件夹中的文件,都还没有赋予权限 ```shell chmod -R 777 /usr/local/mysql chmod -R 777 /usr/local/mysql/data ``` ### 启动服务 进入mysql中的`support-files`文件夹,启动服务 ```shell cd /usr/local/mysql/support-files ./mysql.server start ``` ### 将mysql加入系统进程中 ```shell cp mysql.server /etc/init.d/mysqld # 重启 service mysqld restart ``` ## 连接mysql并设置密码 ### 创建一个软连接到` /usr/bin` ```shell ln -s /usr/local/mysql/bin/mysql /usr/bin ``` ### 连接mysql ```shell mysql -u root -p ``` ![1634609326_1_.jpg](https://i.loli.net/2021/10/19/7GK6nyuU8ptmHeP.png) ### 输入上面复制的密码 ![](https://i.loli.net/2021/09/30/Enl9C6bDp43fHM8.png) ### 修改密码 ```sql ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码'; ``` ### 设置允许远程登录 ```sql mysql> use mysql; mysql> update user set user.Host='%' where user.User='root'; # 应用配置 mysql> flush privileges; # 退出mysql mysql> quit ``` ### 重启mysql ```shell service mysqld restart ``` ### 检查3306端口是否开放 ```shell firewall-cmd --zone=public --list-ports ``` ### 开放3306端口 ```shell firewall-cmd --zone=public --add-port=3306/tcp --permanent ``` ### 重启防火墙 ```shell firewall-cmd --reload ``` # 可能出现的错误 ## 登录mysql的时候报错 `mysql: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory` ![](https://i.loli.net/2021/11/20/uVR8xj2YrTXpwPB.png) ## 解决 ### 安装`libncurses` ``` yum install libncurses* ``` ### 重新登录即可