安装
- 首先,下载MySQL 8.0.31的适用于Linux的安装程序,例如mysql-8.0.31-glibc2.12-x86_64.tar.xz。
- 解压缩安装程序:
tar -xvf mysql-8.0.31-glibc2.12-x86_64.tar.xz
- 将MySQL移动到安装目录:
sudo mv mysql-8.0.31-glibc2.12-x86_64 /usr/local/mysql
- 创建MySQL用户和用户组:
sudo groupadd mysql
和sudo useradd -r -g mysql -s /bin/false mysql
- 授予MySQL用户对MySQL目录的访问权限:
sudo chown -R mysql:mysql /usr/local/mysql
- 同样创建目录/var/run/mysqld和/var/log/mysql,并对其授权
- 先把/etc/my.cnf文件备份(然后改成别的名),因为新机器可能有这个文件,否则可能按这个启动配置
- 为MySQL设置密码:
sudo /usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
- 启动MySQL:
sudo /usr/local/mysql/bin/mysqld_safe --user=mysql &
(此时会生成一个默认密码,记住这个密码 /usr/local/mysql/bin/mysql -uroot -p用这个密码就能登录了) - 修改密码:ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘{新密码}’; 但我们可能不这么做,而是用这种方式ALTER USER ‘root’@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘新密码’ ; 因为我们的连接工具不支持8.0新版本的caching_sha2_password,还是用mysql_native_password为好。
- 停服务:启动是用mysqld_safe,停止用/usr/local/mysql/bin/mysqladmin -uroot -p shutdown (然后输入密码) 因为后面创建服务启动时,会冲突,要提前停掉
配置服务
- 创建MySQL配置文件:
sudo vi /etc/my.cnf
- 输入以下内容:
[client]
port=3306
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mysqld]
port=3306
pid-file=/var/run/mysqld/mysqld.pid
socket=/var/run/mysqld/mysqld.sock
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
log-error=/var/run/mysqld/error.log
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
max_connections=512
max_connect_errors=500
default-storage-engine=INNODB
default_authentication_plugin=mysql_native_password
- 创建MySQL服务文件:
sudo vi /usr/lib/systemd/system/mysqld.service
- 输入以下内容:
[Unit]
Description=MySQL Server
After=network.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld_safe --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/run/mysqld/mysqld.sock
ExecStop=/usr/local/mysql/bin/mysqladmin --user=root --password=your_password shutdown
Restart=always
[Install]
WantedBy=multi-user.target
- 重新加载系统服务:
sudo systemctl daemon-reload
- 启动MySQL服务:
sudo systemctl start mysqld
- 验证MySQL服务是否正在运行:
sudo systemctl status mysqld
修改配置
- 启动可能报错
“Can't connect to local MySQL through socket '/tmp/mysql.sock'”
,这时可以创建个软链接,这要看my.cnf中sock的配置,我这边改成此时要sudo ln -s /var/run/mysqld/mysqld.sock /tmp/mysql.sock
,然后重启服务sudo systemctl restart mysqld
ps -ef|grep mysql
看下命令--socket
指定的路径,也就是my.cnf
中socket
指的的路径,然后启动命令加上-h{ip} -S {替换成查询到的路径}
,比如我这个是-S /var/run/mysqld/mysqld.sock
,就可以启动了
允许远程登录
要允许MySQL远程登录,需要进行以下步骤:
-
登录到MySQL服务器并打开MySQL shell:
mysql -u root -p
-
输入密码以登录。
-
创建一个新的MySQL用户并授予其远程登录权限。例如,要创建名为“remoteuser”的用户并授予其远程登录权限,请运行以下命令:
CREATE USER 'remoteuser'@'%' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON *.* TO 'remoteuser'@'%'; FLUSH PRIVILEGES;
这将创建一个名为“remoteuser”的用户,并授予它在所有数据库和所有表上的所有权限。请注意,“%”符号表示允许从任何IP地址连接到MySQL服务器。