赞
踩
需要创建用户和建立数据目录,然后创建mysql的安装路径以及数据存放的路径,这里可以分开存也可在一条路径上。然后给这个文件设置文件归属者,以及设置mysql用户组中的mysql用户访问和读写权限的一些权利。
#要先删除用户才能删除用户组
sudo userdel mysql #删除mysql用户
sudo groupdel mysql #删除mysql用户组
sudo groupadd mysql
sudo useradd -r -g mysql -s /sbin/nologin mysql
mkdir -p /usr/local/mysql/data
sudo chown -R mysql.mysql /usr/local/mysql/*
sudo chmod -R 755 /usr/local/mysql
这里选择的是mysql-boost-8.0.16.tar.gz,也可以选择.tar.gz结尾的其他版本的mysql源码软件。可以直接使用链接下载,选择带有boost的,不然就要在系统上提前单独安装这个软件。下载之后解压软件。然后进入解压目录,然后即可编译安装,其中/usr/local/mysql是我的安装目录
cd [下载软件的文件夹]
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-boost-8.0.16.tar.gz
tar -zxvf mysql-boost-8.0.16.tar.gz
cd mysql-8.0.16
#编译安装
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DWITH_BOOST=boost -DFORCE_INSOURCE_BUILD=ON
make && make install
#初始化安装
/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
PS:初始化安装中可能会出现一串mysql登陆的密码,可以记下来。不记也没关系。
先看一下在/ettc文件夹下有没有my.cnf,如果没有就新建一个全局用的简单的配置文件。参考问题记录一。
配置好全局文件之后,就可以开启mysql服务了
#配置mysqld服务#
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
update-rc.d mysqld defaults
service mysqld start
#添加路径#
echo -e '# MySQL PATH\nexport PATH=/usr/local/mysql/bin:$PATH\n' >> /etc/profile
source /etc/profile
切换到mysql用户组下,如果你的mysql组密码忘记了,可以先删除它的密码,然后创建密码,在进行登陆。登陆后进行的一些命令可能会出现问题二,问题三。
sudo passwd -d mysql
sudo -u mysql passwd
###设置密码,然后在进行登陆
su - mysql
#在root用户下登陆
mysql -uroot -p
解决方案:新建一个/etc/my.cnf
vim /etc/my.cnf
# 然后写入以下内容 #
[client]
socket = /tmp/mysql.sock
[mysqld]
#skip-grant-tables
socket = /tmp/mysql.sock
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
#pid
pid-file = /usr/local/mysql/mysql.pid
#设置socke文件所在目录
socket = /tmp/mysql.sock
#设置临时目录
tmpdir = /tmp
#允许访问的IP网段,加上这个可以远程访问
bind-address = 0.0.0.0
解决方案:
1.将/etc/my.cnf文件中的skip-grant-tables这个参数的注释除掉。
sudo vim /etc/my.cnf
2.停止mysql数据库,(或者直接 kill -9 [PID] 杀进程!)
/etc/init.d/mysqld stop
3.执行如下命令
mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
4.然后就可以在root用户下免密登陆了,修改密码
//先执行
flush privileges;
//修改密码
UPDATE user SET authentication_string=PASSWORD('newpassword') where USER='root';
//刷新权限
FLUSH PRIVILEGES;
//退出
quit
5.再把/etc/my.cnf文件中的skip-grant-tables这个参数的注释起来,然后重启
/etc/init.d/mysqld restart
#重新登陆
mysql -uroot -p
(在重启过程中可能会遇到问题四)
解决方案:
1.根据错误提示,只需将当前登录用户mysql,加入到sudoers文件中即可。
#回到root用户
su - root
#给root用户添加可写权限
chmod 640 /etc/sudoers
#修改sudoers文件
vim /etc/sudoers
#添加如下内容,按下esc键,输入:wq保存修改并退出编辑。
mysql ALL=(ALL) ALL
2.修改sudoers文件:只读权限(原有权限)
#为了安全考虑
chmod 440 /etc/sudoers
解决方案:
#查看具体问题的命令,看服务有无启动
sudo systemctl status mysql.service
#解决方案
ps -e | grep mysqld
#根据输出的内容,去杀死mysqld进程
sudo kill -9 63525 #63525具体根据你的编码去改
#重新启动服务
service mysql start
//进入mysql库
use mysql
//更新域属性,'%'表示允许任意IP地址访问
update user set host='%' where user ='root';
//执行以上语句之后再执行
FLUSH PRIVILEGES;
//再执行授权语句
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'WITH GRANT OPTION;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。