今天在GPU上安装MySQL,折腾了大半天,服务器用的是arch系统,之前没接触过,遇到了不少问题,我现在从安装开始讲:
在Arch上安装MySQL
MariaDB 现在是 Arch Linux 官方默认的 MySQL 实现。Oracle MySQL 已被移动到 AUR,推荐所有用户升级[broken link: invalid section]到 MariaDB。参见这条公告。
MySQL (简体中文)
安装步骤比较简单,安装网上的说明文档一步步来就好了。
1sudo pacman -S mariadb mariadb-clients
安装完软件包之后,再运行
1# mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
结束后,启动MySQL
1sudo systemctl start mysqld
设置密码
1mysqladmin -u root password '12345678'
搞定!
设置远程登录
这TM的坑就来了,不知道怎么的就把原来数据库的值给改了,下面我一步一步说:
网上的教程大部分都是这样的:
更改配置文件
不同系统的目录可能不一样,大家应该不难找到:
1sudo vim /etc/mysql/my.cnf
在旧版本中找到 skip-networking,把它注释掉就可以了
1#skip-networking
在新版本中:
1
2# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
找到 :bind-address = 127.0.0.1 这一行要注释掉
1#bind-address = 127.0.0.1
修改权限
格式:grant 权限 on 数据库名.表名 用户@登录主机 identified by “用户密码”;
1grant select,update,insert,delete on *.* to root@'%' identified by '123456';
或者所有权限
1GRANT ALL PRIVILEGES ON *.* TO root@'%' IDENTIFIED BY '123456';
接着执行
1flush privileges; 使授权生效
修改user表(坑)
MySQL建用户的时候会指定一个host,默认是127.0.0.1/localhost,那么这个用户就只能本机访问,其它机器用这个用户帐号访问会提示没有权限,host改为%,表示允许所有机器访问。
然后呢,一些博客里面就让我们把原来的localhost改为"%"
Host
User
xxx
root
127.0.0.1
root
::1
root
localhost
root
%
root
恩,没错就是这里。这里的127.0.0.1和localhost是不一样的,我们平常默认登录是用mysql -uroot -p,这样的话(前提是没有修改过配置文件中的对应设置),我们本机地址是localhost,如果不小心把这个改没了。。。。那你就登不上喽:
1error: 'Access denied for user 'root'@'localhost' (using password: YES)'
恩,没错,就是这样的提示,刚开始我还以为密码错了。。。。结果重置了好几遍密码都不行,知道后来才知道,原来是登录地址的权限不对/(ㄒoㄒ)/~~
你想登录的话要这样
1mysql -h 127.0.0.1 -uroot -p
哈哈哈,登录进去了吧,这就说明127.0.0.1和localhost是不一样的。
那么解决办法呢,就是再新增一条127.0.0.1的记录,我们可以直接拷贝原有记录,其余不变,把host中的记录改为127.0.0.1即可。