win10子系统Ubuntu安装mariadb

安装服务

sudo apt-get install mariadb-server

启动服务

在子系统中不能使用原来的:sudo systemctl start mariadb 命令了。
需要使用sudo service mysql start 即可

开始基本设置:sudo mysql_secure_installation

修改端口

编辑/etc/mysql/mariadb.conf.d/50-server.cnf 文件
将其中的port端口修改为想要访问的端口
bind-address = 0.0.0.0 开启全网访问
重启服务sudo service mysql restart
可以通过mysql -h localhost -P 51009 -u root -p 访问

允许远程访问

在数据库中,对已创建的用户,将其host设定为% 即可。下面的命令是对root用户执行的,其中password为密码。也可以对其他用户执行。
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;

创建用户

参考

问题

Q:使用mysql -u root -p 命令登陆时出现ERROR 1698 (28000): Access denied for user ‘root’@‘localhost’
A:参考这里,
原因在于mysql默认使用unix用户验证,当前执行用户不是root,而mysql的用户名为root,所以拒绝。
如果使用sudo mysql -u root -p就没有问题。
解决方法为:创建与系统用户同名的数据库用户

# 登录数据库
$sudo mysql -u root

# 选择 mysql 数据库
MariaDB [(none)]>  USE mysql

# 创建同名数据库用户
MariaDB [mysql]> CREATE USER 'zeamonk'@'localhost' IDENTIFIED BY 'password1';
MariaDB [mysql]> GRANT ALL PRIVILEGES ON *.* TO 'zeamonk'@'localhost';
MariaDB [mysql]> UPDATE user SET plugin='unix_socket' WHERE User='zeamonk';
MariaDB [mysql]> FLUSH PRIVILEGES;
MariaDB [mysql]> exit;

# 重启数据库
sudo systemctl restart mariadb

解决方法2为:修改认证方式。上面的认证方式为unix_socket,采用的是系统的认证。也可以采用mysql自带的认证,修改方式为:

# 登录数据库
$sudo mysql -u root

# 选择 mysql 数据库
MariaDB [(none)]>  USE mysql

# 更改认证方式
mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> exit;

# 重启数据库
sudo systemctl restart mariadb

欢迎关注我的公众号
奇而思

你可能感兴趣的:(linux学习)